set -o pipefail用来解决这种情况,只要一个子命令失败,整个管道命令就失败,脚本就会终止执行。 #!/usr/bin/env bash set -eo pipefail foo | echo a echo bar 运行后,结果如下。 $ bash script.sh a script.sh:行4: foo: 未找到命令 可以看到,echo bar没有执行。 七、总结 set命令的上面这四个参数,...
set -e从根本上解决了这个问题,它使得脚本只要发生错误,就终止执行。 -e还有另一种写法-o errexit。 set -o errexit 1. #!/usr/bin/env bash set -e foo echo bar 执行结果如下。 $ bash script.sh script.sh:行4: foo: 未找到命令 1. 2. 3. ...
也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了。 请看下面这个例子。 #!/usr/bin/env bashset-e foo |echoaechobar 执行结果如下。 $ bash script.sh a script.sh:行4: foo: 未找到命令 bar 上面代码中,foo是一个不存在的命令,但是foo | ech...
set -x用来在运行结果之前,先输出执行的那一行命令。 #!/usr/bin/env bashset-xechobar 执行上面的脚本,结果如下。 $ bash script.sh+echobar bar 可以看到,执行echo bar之前,该命令会先打印出来,行首以+表示。这对于调试复杂的脚本是很有用的。 -x还有另一种写法-o xtrace。 set-o xtrace 四、Bash ...
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello...
用法1:假设你的入口脚本是 myscript.sh,可以新建一个脚本,通过 flock 来运行它: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 # flock--wait 超时时间-e 锁文件-c"要执行的命令"# 例如: flock--wait5-e"lock_myscript"-c"bash myscript.sh" ...
用法1: 假设你的入口脚本是 myscript.sh,可以新建一个脚本,通过 flock 来运行它: # flock --wait 超时时间 -e 锁文件 -c "要执行的命令" # 例如: flock --wait 5 -e "lock_myscript" -c "bash myscript.sh" 用法2: 也可以在原有脚本里使用 flock。 可以把文件打开为一个文件描述符,然后使用 ...
用法1: 假设你的入口脚本是 myscript.sh,可以新建一个脚本,通过 flock 来运行它: # flock --wait超时时间 -e 锁文件 -c"要执行的命令"# 例如: flock--wait5-e"lock_myscript"-c"bash myscript.sh" 用法2: 也可以在原有脚本里使用 flock。 可以把文件打开为一个文件描述符,然后使用 flock 对它上锁...
用法1:假设你的入口脚本是 myscript.sh,可以新建一个脚本,通过 flock 来运行它: 用法2:也可以在原有脚本里使用 flock。可以把文件打开为一个文件描述符,然后使用 flock 对它上锁(flock 可以接受文件描述符参数)。 2. 意外退出时杀掉所有子进程 我们的脚本通常会启动好多子脚本和子进程,当父脚本意外退出时,子...
6. **文件权限**:确认脚本文件具有执行权限(使用 `chmod +x script.sh` 命令添加执行权限)。7. **环境差异**:如果你在不同的环境中运行脚本(如不同的 Bash 版本或操作系统),确保脚本兼容目标环境。8. **简化问题**:如果错误不明显,尝试逐步注释掉部分代码,逐步缩小问题范围。9. **...