Slackware 14.2 上的 Almquist shell,但不是 Debian 的 Almquist shell,支持以下构造。其他类似伯恩的炮弹没有。
setvar "$varname" <...>
Run Code Online (Sandbox Code Playgroud)
Bash 显然具有动态创建变量名的能力
declare "magic_variable_$1=$(ls | tail -1)"
Run Code Online (Sandbox Code Playgroud)
我认为对可以出现的字符有一些限制$1
......(=
想到)。
建议将此作为在 4.0 之前的 Bashes 中伪造关联数组的解决方法。
我可以想出一个愚蠢的函数,使用eval
.
注意:不要以任何理由使用此功能,这是完全不安全的。
assign_dynamically() {
eval "$1='$2'"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果该值$2
包含'
但不支持 中的空格或元字符$1
,则这件事会令人窒息,因此它不是解决方案。
是否有一种可移植/POSIX 兼容的方法来编写一个函数,该函数分配给$2
一个名为变量的变量,$1
而不管任一字符串的内容如何?
不管任何一个字符串,都没有。第一个参数需要是一个有效的变量名。
dynamic_assign(){ eval "$1"=\"\$2\" ; }
Run Code Online (Sandbox Code Playgroud)
和你会得到的一样好
归档时间: |
|
查看次数: |
1736 次 |
最近记录: |