到目前为止,我已经有大约一天的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
,$o
,h
,e
和l
的内容。
我该怎么做?
答案 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'