在循环中回显变量集
echo the set of variables while going through a loop
谁能帮帮我。我一直在尝试替代方案,但我仍然得到相同的输出。
这是我的脚本
#!/bin/sh
field1="a"
field2="s"
field3="d"
field4="f"
field5="g"
for i in {1..5}
do
var1="field"$i
echo $var1
var2="$"$var1
echo $var2
echo $field1
done
这是我的输出
field1
$field1
a
field2
$field2
a
field3
$field3
a
field4
$field4
a
field5
$field5
a
我想要做的是获得类似
的输出
a
s
d
f
g
您正在寻找 ${!var1}
— Bash 特定的 shell 参数扩展。
field1="a"
field2="s"
field3="d"
field4="f"
field5="g"
for i in {1..5}
do
var1="field"$i
echo $var1=${!var1}
done
输出:
field1=a
field2=s
field3=d
field4=f
field5=g
我通过 bash
和 sh
运行 脚本得到了它。显然,如果您不在 echo
中包含 $var1=
,您只会得到您要求的单个字母。
您还应该考虑您的字段是否应该存储在 Bash array.
中
你为什么不用数组?也许是这样的:
#!/bin/sh
field[1]="a"
field[2]="s"
field[3]="d"
field[4]="f"
field[5]="g"
for i in {1..5}
do
echo ${field[i]}
done
当你不确定你有多少个字段变量时,你可以使用类似:
set | grep "^field" | cut -d= -f2
set
列出所有变量; grep
选择'field'开头的; cut
删除变量的值,只留下名称。
谁能帮帮我。我一直在尝试替代方案,但我仍然得到相同的输出。
这是我的脚本
#!/bin/sh
field1="a"
field2="s"
field3="d"
field4="f"
field5="g"
for i in {1..5}
do
var1="field"$i
echo $var1
var2="$"$var1
echo $var2
echo $field1
done
这是我的输出
field1
$field1
a
field2
$field2
a
field3
$field3
a
field4
$field4
a
field5
$field5
a
我想要做的是获得类似
的输出a
s
d
f
g
您正在寻找 ${!var1}
— Bash 特定的 shell 参数扩展。
field1="a"
field2="s"
field3="d"
field4="f"
field5="g"
for i in {1..5}
do
var1="field"$i
echo $var1=${!var1}
done
输出:
field1=a
field2=s
field3=d
field4=f
field5=g
我通过 bash
和 sh
运行 脚本得到了它。显然,如果您不在 echo
中包含 $var1=
,您只会得到您要求的单个字母。
您还应该考虑您的字段是否应该存储在 Bash array.
中你为什么不用数组?也许是这样的:
#!/bin/sh
field[1]="a"
field[2]="s"
field[3]="d"
field[4]="f"
field[5]="g"
for i in {1..5}
do
echo ${field[i]}
done
当你不确定你有多少个字段变量时,你可以使用类似:
set | grep "^field" | cut -d= -f2
set
列出所有变量; grep
选择'field'开头的; cut
删除变量的值,只留下名称。