我正在尝试运行以下脚本:
#!/bin/sh
. ./test.prop
for ((i=0; i<10;i++)
do
echo $F($i)
done
它来源的文件包含参数分配:
F1=20
F2=30
F3=40
.
.
.
脚本的所需输出为
10
20
30
40
.
.
.
$F($i)
的正确语法是什么?或者我不能简单地使用它?
答案 0 :(得分:3)
您可以使用间接参数扩展:
for ((i=0; i<10; i++)); do
f="F$i"
echo "${!f}"
done
答案 1 :(得分:3)
为什么不使用数组?
F=(10 20 30 ...)
和
for i in {0..9}; do
echo ${F[i]}
done
答案 2 :(得分:2)
您应该使用eval
:
eval "echo \$F$i"
Eval用于评估然后运行命令,允许您动态生成命令。通过转义第一个美元符号,它在生成的命令中显式使用,而转义第二个美元符号的注释允许我们将其值扩展为用于生成变量名称的数字。因此,假设$i
包含值“1”,生成的命令为echo $F1
。
希望这有助于=)
答案 3 :(得分:1)
您可以使用grep命令:
grep ^F prop.test | awk -F= '{print $2}'
这将以F
开头的所有行打印并在=
之后打印该数字。