关于linux里set命令的信息( 四 )


-m:使?监视模式 。
-n:只读取指令,?不实际执? 。
-p:启动优先顺序模式 。
-P:启动-P参数后,执?指令时,会以实际的?件或?录来取代符号连接 。
-t:执?完随后的指令,即退出shell 。
-u:当执?时使?到未定义过的变量,则显?错误信息 。
第 3 页
-v:显?shell所读取的输?值 。
-x:执?指令后,会先显?该指令及所下的参数 。
参数
取消某个set曾启动的参数 。
实例
使?declare命令定义?个新的环境变量"mylove",并且将其值设置为"Visual C++",输?如下命令:
declare mylove='Visual C++' #定义新环境变量
第 4 页
再使?set命令将新定义的变量输出为环境变量,输?如下命令:
set -a mylove #设置为环境变量
执?该命令后,将会新添加对应的环境变量 。?户可以使?命令和命令分别显?和搜索环境变量"mylove",输?命令如下:
env | grep mylove #显?环境变量值
此时,该命令执?后 , 将输出查询到的环境变量值 。
Linux篇:从rm -rf 引发的脚本安全闲聊(set 命令)上周刚经历了一个“删库跑路”的惨重事件linux里set命令,不知哪位无邪的童鞋把Confluence 的数据存储目录 /var 清空了,结果群众的怒火燃烧上了天空
这次结合自己的一些思考来记录一些有关脚本安全的点
先来看一个简单的案例
在用户主目录下创建safe目录及相关文件用于测试演示
假如写一段脚本删除safe目录下所有文件linux里set命令:
这段是不是看起来没有问题,但如果由于有些大心脏的同学粗心,写成下面这样
最终,脚本都变成了rm-rf* , 可怕至极
其实在shell脚本当中 , 为了防止这种现象,linux里set命令我们可以借助set 命令来实现相关控制
关于set 命令有较多参数,这里介绍最常用的几个
我们以刚才图4那段有问题的脚本说事
为保证不错删东西  , 我们加一个set -u 选项,判断变量是否存在
我们执行一下,看看效果
看,报错啦,dir这个变量没有声明,ls 查看一下文件,发现都还存在
set -e与set -u 通常搭配在一起使用
一个是遇到错误退出,一个是发现空变量报错
这两个搭配在一起放在脚本里可以防止一些变量为空导致文件全被清空的问题
拓展一下:
如果只想应用在脚本的某一段中,那么
开始段落前加set -e 表示范围开始
结束段落后加 set +e 表示范围结束
set -x 与set + x同理 。
1、删文件其实不用rm -rf ,不是受迫性需要,不要使用rm -rf
2、修改、删除系统文件或其他重要的东西,先备份一份
3、非特殊需要 , 不建议在root下操作,普通用户即可
4、脚本加上set -e 与set -u保证安全
【关于linux里set命令的信息】linux里set命令的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于、linux里set命令的信息别忘了在本站进行查找喔 。

推荐阅读