Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在bash中通过变量的别名为变量设置值吗?_Bash - Fatal编程技术网

我可以在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”,这不起作用 有些人有解决

我想通过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”,这不起作用

有些人有解决办法或建议,请告诉我。
非常感谢。

假设您可以相信变量是安全的:

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的答案是一个更好的选择。