如何在使用IF语句时将多个命令拆分为一个shell命令?
当命令是if
语句的一部分时,如何在shell中的多行中分割命令?
虽然这工作:
if ! fab --fabfile=.deploy/fabfile.py --forward-agent --disable-known-hosts deploy:$target; then rc=1 fi
这不工作:
# does not work: if ! fab --fabfile=.deploy/fabfile.py \ --forward-agent \ --disable-known-hosts deploy:$target; then rc=1 fi
而不是整个命令执行,我得到:
./script.sh: line 73: --forward-agent: command not found
更重要的是,我对Bash的理解所缺less的东西,将会帮助我理解这一点以及未来的类似问题。
如果在反斜杠之后和换行符之前有空格(空格或制表符),则连续行将失败。 没有这样的空白,你的例子适合我:
$ cat test.sh if ! fab --fabfile=.deploy/fabfile.py \ --forward-agent \ --disable-known-hosts deploy:$target; then echo failed else echo succeeded fi $ alias fab=true; . ./test.sh succeeded $ alias fab=false; . ./test.sh failed
对于Windows / Cygwin / etc用户:
确保你的行结尾是标准的Unix行,例如\n
(LF)。 有Windows \r\n
(CRLF)行结尾将打破它。