是否可以从使用命令替换调用的函数中退出脚本?
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
我本来希望退出让我脱离脚本,而不是命令替换。这可能吗?
答案 0 :(得分:3)
此:
p=$(do_and_check /etc/passwd)
正在执行子shell,这就是你要退出的东西。我会在函数中设置退出值(为非零值),然后在命令替换后检查返回值$?
。