Kev*_*vin 0 variables bash eval dynamic
这是一个不符合我期望的示例脚本:
#!/bin/bash
for dynamic in a b c; do
myvar=$dynamic
export $myvar="hi"
echo $(eval "$myvar")
echo $dynamic
done
Run Code Online (Sandbox Code Playgroud)
我希望输出是:
hi
a
hi
b
hi
c
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我愿意偏离这种方法,但我绝对希望能够创建一个从算法输出中命名的变量.在这种情况下,它只是一个for循环.
eval有引起错误的倾向,所以尽可能避免它; 在这种情况下,使用间接扩展更加清晰${!metavariable}:
#!/bin/bash
for dynamic in a b c; do
myvar=$dynamic
export $myvar="hi"
echo ${!myvar}
echo $dynamic
done
Run Code Online (Sandbox Code Playgroud)