运行此代码时出现“错误替换”错误。我想用循环打印h_1
, h_2
,中的值。h_3
for
#/!/bin/bash
h_1=12
h_2=13
h_3=14
for ((i=1; i<=2; i++))
do
echo "${h_$i}"
done
答案1
答案2
我会使用双括号形式,即所谓的Arithmetic Expansion
:
echo $((h_$i))
不需要数组、临时变量或其他花哨的东西。另外,我相信这种形式是最可移植的(据我所知,POSIX 需要算术扩展)。
来自 Bash 手册:
算术展开允许计算算术表达式并替换结果。算术展开式的格式为:
$((expression))
该表达式被视为位于双引号内,但括号内的双引号不会被特殊处理。表达式中的所有标记都会经历参数扩展、字符串扩展、命令替换和引号删除。算术展开式可以嵌套。