【发布时间】:2020-06-30 23:37:12
【问题描述】:
在 bash 中,如果我运行
(foo=14)
然后尝试稍后在我的 bash 脚本中引用该变量:
echo "${foo}"
我什么都没有。如何让 bash 按我需要的方式存储这个变量?
具体来说,我在 if 语句中使用它并检查退出代码,类似于:
if (bar="$(foo=14;echo "${foo}"|tr '1' 'a' 2>&1)")
then
echo "Setting "'$bar'" was a success. It is ${bar}"
else
echo "Setting "'$bar'" failed with a nonzero exit code."
fi
【问题讨论】:
-
在这种情况下使用括号有什么意义?我认为不需要额外的子外壳。另外,我认为查询
tr的退出代码没有意义。 AFIK,tr如果从标准输入读取并且没有使用无效选项调用,则始终返回退出代码 0。在您的情况下,我认为不会采用else分支。 -
@user1934428 这只是一个简单的例子。实际上,我的 if 语句比这更令人生畏和复杂。
标签: bash macos variables if-statement