我想在bash中通过它的别名设置一个值,如下所示。
ORIGINAL_VALUE="a"
ALIAS="ORIGINAL_VALUE"
"$ALIAS"="b" # This line does not work.
echo "value is $ORIGINAL_VALUE"
我期望的结果是
value is b
现在我知道可以通过ALIAS读取ORIGINAL_VALUE的值
${!ALIAS}
但是,不幸的是,我不知道如何通过ALIAS设置ORIGINAL_VALUE的值,例如“$ ALIAS”=“b”,这不起作用。
有些人有解决方案或建议,请告诉我。 非常感谢你。
答案 0 :(得分:3)
您可以使用declare
:
ORIGINAL_VALUE="a"
ALIAS="ORIGINAL_VALUE"
declare $ALIAS="b"
echo "value is $ORIGINAL_VALUE"
输出:
value is b
附注:如果你把它放到一个函数中并希望从函数范围之外改变一个变量的值,那么这将不起作用,因为declare
会在本地重新声明变量
答案 1 :(得分:3)
使用nameref(.*
4.3或更高版本)
bash
答案 2 :(得分:0)
假设您可以相信变量是安全的:
eval $ALIAS=b