Tal*_*Tal 5 bash shell-script variable
如果我有这样的功能:
TEST()
{
if [[ "$1" == "hi" ]]
then
exit 1
fi
echo "Some text"
}
Run Code Online (Sandbox Code Playgroud)
如果我在当前 shell 中运行该函数:
TEST "hi"
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作。函数中的 if 语句为真,整个脚本将退出。另一方面,如果我这样做:
FUNCTION_OUTPUT=$(TEST "hi")
Run Code Online (Sandbox Code Playgroud)
这样我就可以在变量中从函数中捕获标准输出,函数内的 if 语句仍然为真,“exit 1”仍将触发,但由于我们在子 shell 中运行,脚本将继续运行。
不是使用 VAR_NAME=$() 在子shell中运行某些东西并将其分配给变量,有没有办法在当前shell中运行它,以便我的函数中的“exit 1”行实际上退出整个脚本?
变量赋值只是一个简单的命令,因此您可以使用if 条件来检查函数是否成功或失败:
if ! FUNCTION_OUTPUT=$(TEST hi); then
echo Function return non-zero status
exit 1
fi
# This line never printed
printf '%s\n' "$FUNCTION_OUTPUT"
Run Code Online (Sandbox Code Playgroud)
如果函数成功,您将获得FUNCTION_OUTPUT
包含函数结果的变量:
if ! FUNCTION_OUTPUT=$(TEST hii); then
echo Function return non-zero status
exit 1
fi
# Output content of FUNCTION_OUTPUT
printf '%s\n' "$FUNCTION_OUTPUT"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2675 次 |
最近记录: |