shell脚本中set指令

set -x介绍

用于脚本调试,在liunx脚本中可用set -x就可有详细的日志输出.免的总是用echo了

复制代码
参考

#!/bin/bash
set -x
a=${1}
b=$

 结果

bash This is a premium name 1 2
+ a=1
+ b=1
复制代码

set -e介绍

每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出。这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。

复制代码
参考

#!/bin/bash set-e lp #这里运行会出错 date 这种情况下,运行一旦出错就会退出,不放过一个问题: $ ./test.sh lp: Error - nodefaultdestination available. 当然了,这也有不好的地方,有时候命令执行本来就可能是失败的,你还是希望它继续,可以临时加上|| true: #!/bin/bash set-e lp || true date 不过个人觉得这样的设置用处不是特别大,因为很多时候就是需要处理不同的错误情况,而这样只能要么遇到错误退出,要么认为正确,导致无法走到异常分支。
复制代码

使用-e帮助你检查错误。如果你忘记检查,bash会帮你执行。不幸的是,你将无法检查$?,因为如果执行的语句不是返回0,bash将无法执行到检查的代码。你可以使用其他的结构:

复制代码
if [ "$?"-ne 0]; then   
    echo "command failed";   
    exit 1;   
fi   
could be replaced with

能够被代替为

command || { echo "command failed"; exit 1; }

或者

if ! command; then  
     echo "command failed";   
    exit 1;   
fi  
复制代码

 

posted @   客Ren  阅读(740)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· .NET中 泛型 + 依赖注入 的实现与应用
点击右上角即可分享
微信分享提示