连接$和var-> $ var时不显示var的值

时间:2019-02-03 14:36:31

标签: bash parameter-expansion

到目前为止,我已经有大约一天的bash经验。

<input type="number" id="ddd" min="1" max="365" placeholder="ddd" /> 
<input type="number" id="hh" min="1" max="23" placeholder="hh" />:<input id="mm" type="number" min="1" max="59" placeholder="mm" />
<span id="error"></span>

此脚本返回“ $ echo -e $(($myVar * $anyVar)) ”,“ string () { for (( i=0; i<${#1}; i++ )) do echo "$"${1:$i:1}"" done } string "hello" ”,“ $h”,“ $e”,“ $l”, 但是我实际上希望它返回变量$l$ohel的内容。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要使用间接参数扩展:

for ((i=0; i<${#1}; i++)); do
    t=${1:i:1}
    echo "${!t}"
done

${!t}$t的值,并将其视为要扩展的参数的名称。

答案 1 :(得分:0)

使用eval安全地编写一系列echo来输出bash 参数转换赋值语句和 GNU < / em> grep划分输入字符串:

h=foo o=bar
string() { eval $(printf 'echo ${%s@A};\n' $(grep -o . <<< "$@" )) ; }
string hello

输出,(空白行表示未设置的变量$e$l):

h='foo'



o='bar'