这个set命令的这些功能你了解吗
有一说一,我之前还真不知道set命令这么好用,还傻呵呵地自己写函数做脚本阶段性判断,判断上一条命令是否有问题,有问题就直接退出脚本。
这在部署脚本里非常有必要,毕竟如果第一步执行不成功,后面的脚本就没有必要执行了。
大家可以看我这篇文章 “给你一篇部署文档,你能不能写一个脚本出来” 这里面就有个ck_ok函数。其实要是我早知道set命令的用法,我才不会自己写判断函数。废话不多说,直接上重点:set命令的-e选项就有我写的那个ck_ok函数的功能。直接来一段代码看效果吧。
第三个用法,set -u加上后,如果脚本里调用了一个没有被赋值的变量,则会报错。脚本示例:
这在部署脚本里非常有必要,毕竟如果第一步执行不成功,后面的脚本就没有必要执行了。
大家可以看我这篇文章 “给你一篇部署文档,你能不能写一个脚本出来” 这里面就有个ck_ok函数。其实要是我早知道set命令的用法,我才不会自己写判断函数。废话不多说,直接上重点:set命令的-e选项就有我写的那个ck_ok函数的功能。直接来一段代码看效果吧。
#! /bin/bash
set -e
echo "Hello, this is a test script."
ls /tmp/aminglinux.com
echo "123"
执行该脚本后,结果为:
Hello, this is a test script.
ls: 无法访问/tmp/aminglinux.com: 没有那个文件或目录
如果不加第二行的set -e,则结果为:Hello, this is a test script.
ls: 无法访问/tmp/aminglinux.com: 没有那个文件或目录
123
作用一目了然,set -e就是让脚本实现,一旦遇到错误马上退出脚本。第二个用法:要想在脚本某一段做调试,也就是说想要查看脚本代码执行过程详细信息,可以在该代码片段前加set -x,在该代码片段后加set +x。看脚本吧:
#!/bin/bash
a=1
b=2
set -x
c=3
d=4
e=$[$a+$b]
f=$[$c*$d]
echo $e
set +x
echo $f
执行结果:+ c=3
+ d=4
+ e=3
+ f=12
+ echo 3
3
+ set +x
12
说明:set -x表示开启x选项,set +x表示关闭x权限。第三个用法,set -u加上后,如果脚本里调用了一个没有被赋值的变量,则会报错。脚本示例:
#!/bin/bashset -ua=1echo $becho $a
执行脚本,会报错:line 4: b: unbound variable
如果去掉脚本里的set -u,再次执行脚本,结果是:
1
它会将没有赋值的变量打印成空行。Set命令常用用法就这三个。就这!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通