shell脚本安全和 set命令

5 脚本安全和 set 命令

5.1 set 命令

set 命令:用来定制shell环境

  • 为了防止变量赋值故障导致问题,应使用set -u进行检查,发现变量为空会报错
  • 为了防止错误命令导致后续问题,应使用set -e一旦发现错误立即退出

使用方法:

  • 写在脚本内容最前方即可!!!
#!/bin/bash
set -e
------------------------------------------------------------
# 其他选项说明
-u 在扩展一个没有设置的变量时,显示错误信息, 等同set -o nounset
-e 如果一个命令返回一个非0退出状态值(失败)就退出, 等同set -o errexit
-x 当执行命令时,打印命令及其参数,类似 bash -x
-o option 显示,打开或者关闭选项
         显示选项:set -o
         打开选项:set -o 选项
         关闭选项:set +o 选项

=

5.2 set 所有功能

查看所有功能的开关:

[root@centos8 ~]# set -o
allexport      	off
braceexpand    	on
emacs          	on
errexit        	off     # set -e 对应的功能
errtrace       	off
functrace      	off
hashall        	on
histexpand     	on
history        	on
ignoreeof      	off
interactive-comments	on
keyword        	off
monitor        	on
noclobber      	off
noexec         	off
noglob         	off
nolog          	off
notify         	off
nounset        	off     # set -u 对应的功能
onecmd         	off
physical       	off
pipefail       	off
posix          	off
privileged     	off
verbose        	off
vi             	off
xtrace         	off

=

=

5.3 $-变量

1 作用
  • 控制bash的相关功能
[root@centos8/~]# echo $-
himBHs
# 通过命令 set 开启或关闭相关功能  
h:hashall,打开选项后,Shell 会将命令所在的路径hash下来,避免每次都要查询。通过set +h将h选项关闭
i:interactive-comments,包含这个选项说明当前的 shell 是一个交互式的 shell。
   所谓的非交互式shell在脚本中,i选项是关闭的
m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继续,后台或者前台执行等
B:braceexpand,大括号扩展
H:history,H选项打开,可以展开历史列表中的命令,可以通过!感叹号来完成,
   例如“!!”返回上最近的一个历史命令,“!n”返回第 n 个历史命令

=

2 启闭方式
  • 使用加号表示关闭!!!!
[root@centos8 ~]# echo $-
himBHs

[root@centos8 ~]# echo {1..5}
1 2 3 4 5

[root@centos8 ~]# set +B		  # 关闭 B 对应功能!!!!!!!!!!!!!!!
[root@centos8 ~]# echo $-
himHs							# 关闭后就不再显示。。。

[root@centos8 ~]# echo {1..5}
{1..5}							# 已经不能进行数字序列扩展。。。

[root@centos8 ~]# set -B		  # 恢复
[root@centos8 ~]# echo $-
himBHs
[root@centos8 ~]# echo {1..5}
1 2 3 4 5

=wan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值