1

如果我将所有命令复制并粘贴到终端中......有些甚至没有通过。

因此解决方案可能是将文件转换为可执行文件然后执行它。

但是如果某些命令失败怎么办。

该脚本继续执行其他命令。

显然没有办法解决这个问题吧?

4

3 回答 3

1

最简单的方法是使用-eshell 中的选项。例如:

#!/bin/sh -e

command1
command2

在此脚本中,如果command1失败,则整个脚本将在该点失败,而无需运行任何进一步的命令。

于 2013-08-11T23:44:29.573 回答
0

您可以从您运行的命令中检查错误代码

#!/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 退出状态

于 2013-08-11T23:41:32.057 回答
0

@Terminal,你快到了。
如果您只是坚持&&每个命令的末尾,那么执行将在第一次失败时停止(即第一个返回非零退出代码的命令)。
例子:

     #!/bin/sh
     true &&  
     echo 'got here' &&  
     echo 'got here too' &&  
     false &&  
     echo 'also got here'

产生输出

     got here  
     got here too

(实际上,我认为它也需要行继续标记:&& \,但快速测试表明并非如此。)
注意:以上所有内容都假设您的 shell 是 bash;我不能说其他贝壳。

于 2013-08-12T03:19:25.103 回答