我可以在bash中通过变量的别名为变量设置值吗?
我想通过bash中的别名设置一个值,如下所示我可以在bash中通过变量的别名为变量设置值吗?,bash,Bash,我想通过bash中的别名设置一个值,如下所示 ORIGINAL_VALUE="a" ALIAS="ORIGINAL_VALUE" "$ALIAS"="b" # This line does not work. echo "value is $ORIGINAL_VALUE" 我期望的结果是 value is b 现在我知道可以通过ALIAS by读取原始_值的值 ${!ALIAS} 但是,不幸的是,我不知道如何通过别名设置原始_值的值,比如“$ALIAS”=“b”,这不起作用 有些人有解决
ORIGINAL_VALUE="a"
ALIAS="ORIGINAL_VALUE"
"$ALIAS"="b" # This line does not work.
echo "value is $ORIGINAL_VALUE"
我期望的结果是
value is b
现在我知道可以通过ALIAS by读取原始_值的值
${!ALIAS}
但是,不幸的是,我不知道如何通过别名设置原始_值的值,比如“$ALIAS”=“b”,这不起作用
有些人有解决办法或建议,请告诉我。
非常感谢。假设您可以相信变量是安全的:
eval $ALIAS=b
假设您可以信任变量是安全的:
eval $ALIAS=b
您可以使用
声明:
ORIGINAL_VALUE="a"
ALIAS="ORIGINAL_VALUE"
declare $ALIAS="b"
echo "value is $ORIGINAL_VALUE"
输出:
value is b
旁注:如果将其放入函数中,并希望从函数范围之外更改变量的值,则此操作无效,因为在这种情况下,declare
将在本地重新声明变量。您可以使用declare
:
ORIGINAL_VALUE="a"
ALIAS="ORIGINAL_VALUE"
declare $ALIAS="b"
echo "value is $ORIGINAL_VALUE"
输出:
value is b
旁注:如果将其放入函数中,并希望从函数范围之外更改变量的值,则此操作无效,因为在这种情况下,declare
将在本地重新声明变量。使用nameref(bash
4.3或更高版本)
使用nameref(bash
4.3或更高版本)
alias
是一个shell关键字——您可以尝试使用另一个术语,以避免让人们对您的意思产生混淆。顺便说一句,另请参见感谢Charles Duffy为我提供了一个站点,该站点提供了变量引用的全面说明。顺便说一下,你把这个问题标记为重复的。我应该删除这个问题吗?恐怕我提供给贡献者的观点也被删除了。没有理由删除它——重复的观点在这里是有用的,他们使用不同的术语来提出问题,使搜索者更有可能找到他们使用的术语。alias
是一个shell关键字--您可以尝试使用不同的术语来避免让人们混淆您的意思。顺便说一句,另请参阅谢谢您,Charles Duffy,为我提供一个网站,全面指导变量的引用。顺便说一下,你把这个问题标记为重复的。我应该删除这个问题吗?恐怕我提供给投稿人的观点也被删除了。没有理由删除它——当他们使用不同的术语来提出一个问题,使搜索者更有可能找到他们使用的术语时,副本是有用的。很好!我从来都不知道我的聚会能做到这一点。谢谢你,切普纳。它在我的聚会上起作用。我想你的回答是对我问题的直接回答。当然,其他答案也很好,它们可能具有兼容性的优势。谢谢,很好!我从来都不知道我的聚会能做到这一点。谢谢你,切普纳。它在我的聚会上起作用。我想你的回答是对我问题的直接回答。当然,其他答案也很好,它们可能具有兼容性的优势。谢谢,谢谢你,卡洛里·霍瓦思。我在上面提出了一点,谢谢你,卡洛里·霍瓦思。我在上面提出了一点。谢谢你,hek2mgl。你的解决方案和旁注对我来说是很好的信息。我需要将原始变量重置为全局变量。所以这一次,来自切普纳的解决方案似乎是更好的方法。再次感谢你,不客气。我同意如果你有bash-4.3并且不关心其他shell,切普纳的答案是一个更好的选择。谢谢你,hek2mgl。你的解决方案和旁注对我来说是很好的信息。我需要将原始变量重置为全局变量。所以这一次,来自切普纳的解决方案似乎是更好的方法。再次感谢你,不客气。我同意,如果您有bash-4.3,并且不关心其他shell,那么chepner的答案是一个更好的选择。