如果我将所有命令复制并粘贴到终端中......有些甚至没有通过。
因此解决方案可能是将文件转换为可执行文件然后执行它。
但是如果某些命令失败怎么办。
该脚本继续执行其他命令。
显然没有办法解决这个问题吧?
最简单的方法是使用-e
shell 中的选项。例如:
#!/bin/sh -e
command1
command2
在此脚本中,如果command1
失败,则整个脚本将在该点失败,而无需运行任何进一步的命令。
您可以从您运行的命令中检查错误代码
#!/bin/bash
function test {
"$@"
status=$?
if [ $status -ne 0 ]; then
echo "error with $1"
exit 255
fi
return $status
}
test ls
test ps -ef
test not_a_command
从这里获取更多信息有效地检查几个命令的 Bash 退出状态
@Terminal,你快到了。
如果您只是坚持&&
每个命令的末尾,那么执行将在第一次失败时停止(即第一个返回非零退出代码的命令)。
例子:
#!/bin/sh
true &&
echo 'got here' &&
echo 'got here too' &&
false &&
echo 'also got here'
产生输出
got here
got here too
(实际上,我认为它也需要行继续标记:&& \
,但快速测试表明并非如此。)
注意:以上所有内容都假设您的 shell 是 bash;我不能说其他贝壳。