Linux里面set -e命令作用是什么?Linux里面set -e命令作用是 , 如果一个命令返回一个非0退出状态值(失败),就退出.
这个命令-e参数企业应用极少
set的“ ” ,"-" 分别用于关闭或者打开某些特性;具体的特性有很多,这里介绍 -e 特性:
set -e ; 表示后续所有的bash 命令的返回code 如果不是0,那么脚本立即退出,后续的脚本将不会得到执行的机会;
sete ; 这个是默认的状态 , 表示就算后续的命令如果返回值不是0,那么脚本依然向下执行;
所以 set -e其实就是从设置的位置起,给脚本的每一条命令加上了同一个退出条件;而sete 则是取消这种设置;
看下面的例子:
[root@oldboy ~]# cat test.sh
#!/bin/bash
function lookupstr(){
grep "sles" /etc/os-release /dev/null 21
if [ "$?" -ne 0 ];then
echo -e "Can not find the 'sles' string in file.\n"
fi
}
echo "Below results based on: sete"
sete
lookupstr
echo "Below results based on: set -e"
set -e
lookupstr
[root@oldboy ~]# ./test.sh
Below results based on: sete
Can not find the 'sles' string in file.
Below results based on: set -e
[root@oldboy ~]#
set -e option 可以帮助优化脚本
Linux篇:从rm -rf 引发的脚本安全闲聊(set 命令)上周刚经历linux中set命令了一个“删库跑路”的惨重事件linux中set命令,不知哪位无邪的童鞋把Confluence 的数据存储目录 /var 清空了,结果群众的怒火燃烧上了天空
这次结合自己的一些思考来记录一些有关脚本安全的点
先来看一个简单的案例
在用户主目录下创建safe目录及相关文件用于测试演示
假如写一段脚本删除safe目录下所有文件linux中set命令:
这段是不是看起来没有问题,但如果由于有些大心脏的同学粗心,写成下面这样
最终,脚本都变成了rm-rf*,可怕至极
其实在shell脚本当中 , 为了防止这种现象,linux中set命令我们可以借助set 命令来实现相关控制
关于set 命令有较多参数,这里介绍最常用的几个
linux中set命令我们以刚才图4那段有问题的脚本说事
为保证不错删东西,我们加一个set -u 选项 ,判断变量是否存在
我们执行一下 , 看看效果
看,报错啦,dir这个变量没有声明,ls 查看一下文件,发现都还存在
set -e与set -u 通常搭配在一起使用
一个是遇到错误退出,一个是发现空变量报错
这两个搭配在一起放在脚本里可以防止一些变量为空导致文件全被清空的问题
拓展一下:
如果只想应用在脚本的某一段中,那么
开始段落前加set -e 表示范围开始
结束段落后加 sete 表示范围结束
set -x 与setx同理 。
1、删文件其实不用rm -rf ,不是受迫性需要,不要使用rm -rf
2、修改、删除系统文件或其他重要的东西,先备份一份
3、非特殊需要,不建议在root下操作,普通用户即可
4、脚本加上set -e 与set -u保证安全
linux用set命令显示当前模式Linux系统设置:set命令详解
set命令作?主要是显?系统中已经存在的shell变量 , 以及设置shell变量的新变量值 。使?set更改shell特性时,符号" "和"-"的作?分别是打开和关闭指定的模式 。set命令不能够定义新的shell变量 。如果要定义新的变量,可以使?命令以变量名=值的格式进?定义即可 。
语法
set(选项)(参数)
选项
-a:标?已修改的变量,以供输出?环境变量 。
-b:使被中?的后台程序?刻回报执?状态 。
-C:转向所产?的?件?法覆盖已存在的?件 。
-d:Shell预设会?杂凑表记忆使?过的指令,以加速指令的执? 。使?-d参数可取消 。
-e:若指令传回值不等于0,则?即退出shell 。
-f:取消使?通配符 。
-h:?动记录函数的所在位置 。
【关于linux中set命令的信息】-H Shell:可利?"!"加指令编号的?式来执?history中记录的指令 。
-k:指令所给的参数都会被视为此指令的环境变量 。
-l:记录for循环的变量名称 。
-m:使?监视模式 。
-n:只读取指令,?不实际执? 。
-p:启动优先顺序模式 。
-P:启动-P参数后,执?指令时,会以实际的?件或?录来取代符号连接 。
-t:执?完随后的指令,即退出shell 。
-u:当执?时使?到未定义过的变量,则显?错误信息 。
-v:显?shell所读取的输?值 。
-x:执?指令后,会先显?该指令及所下的参数 。
参数
取消某个set曾启动的参数 。
实例
使?declare命令定义?个新的环境变量"mylove",并且将其值设置为"Visual C" , 输?如下命令:
declare mylove='Visual C' #定义新环境变量
再使?set命令将新定义的变量输出为环境变量,输?如下命令:
set -a mylove #设置为环境变量
执?该命令后,将会新添加对应的环境变量 。?户可以使?命令和命令分别显?和搜索环境变量"mylove",输?命令如下:
env | grep mylove #显?环境变量值
此时,该命令执?后,将输出查询到的环境变量值 。
¥
5.9
百度文库VIP限时优惠现在开通,立享6亿 VIP内容
立即获取
Linux系统设置:set命令详解
Linux系统设置:set命令详解
set命令作?主要是显?系统中已经存在的shell变量,以及设置shell变量的新变量值 。使?set更改shell特性时,符号" "和"-"的作?分别是打开和关闭指定的模式 。set命令不能够定义新的shell变量 。如果要定义新的变量,可以使?命令以变量名=值的格式进?定义即可 。
语法
set(选项)(参数)
选项
-a:标?已修改的变量,以供输出?环境变量 。
第 1 页
-b:使被中?的后台程序?刻回报执?状态 。
-C:转向所产?的?件?法覆盖已存在的?件 。
-d:Shell预设会?杂凑表记忆使?过的指令,以加速指令的执? 。使?-d参数可取消 。
-e:若指令传回值不等于0,则?即退出shell 。
-f:取消使?通配符 。
-h:?动记录函数的所在位置 。
-H Shell:可利?"!"加指令编号的?式来执?history中记录的指令 。
第 2 页
-k:指令所给的参数都会被视为此指令的环境变量 。
-l:记录for循环的变量名称 。
-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中set命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、linux中set命令的信息别忘了在本站进行查找喔 。
推荐阅读
- 虎牙直播抢单成功截图,虎牙直播抢藏宝图技巧
- p50是鸿蒙哪个版本,华为p50是鸿蒙吗
- 如何跟电商供货,如何跟电商供货商沟通
- java是托管代码 java是代码吗
- css有角度的渐变背景,css设置渐变背景色
- 王者模拟器小程序游戏,王者模拟软件
- 幼儿益智游戏过程图片,幼儿益智游戏教案设计
- mysql前端怎么使用 mysql前端界面用什么做
- 河源专业sap技术指导,河源专业sap技术指导师招聘