无法访问 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

括在括号中的命令,例如()在子外壳中执行。子外壳中的任何赋值都不会存在于该子外壳之外。

foo=14
bar=$(echo $foo | tr '1' 'a' )
if [[ $? -eq 0 ]]
then
echo "Setting "'$bar'" was a success. It is ${bar}"
else
echo "Setting "'$bar'" failed with a nonzero exit code."
fi

最新更新