从命令替换中退出bash脚本

时间:2013-01-03 09:40:20

标签: bash

是否可以从使用命令替换调用的函数中退出脚本?

e.g

#/bin/bash
function do_and_check()
{
    ls $1 || exit
}

p=$(do_and_check /etc/passwd)
q=$(do_and_check /xxx)

运行它的结果是

bash -x yyy                                                                                                             
++ do_and_check /etc/passwd                                                                                                                  
++ ls /etc/passwd                                                                                                                             
+ p=/etc/passwd
++ do_and_check /xxx
++ ls /xxx
ls: cannot access /xxx: No such file or directory
++ exit
+ q=
+ echo /etc/passwd
/etc/passwd

我本来希望退出让我脱离脚本,而不是命令替换。这可能吗?

1 个答案:

答案 0 :(得分:3)

此:

p=$(do_and_check /etc/passwd)

正在执行子shell,这就是你要退出的东西。我会在函数中设置退出值(为非零值),然后在命令替换后检查返回值$?