想要使用 shell 脚本从属性文件中读取多个值
我的属性文件如下所示,我按照以下方式添加它的原因是为了确保,如果将来有更多学生加入,我只需要添加到属性文件中,而不需要更改 shell 脚本中的任何内容。
学生属性
total_student=6
student_name_1="aaaa"
student_name_2="bbbb"
student_name_3="cccc"
student_name_4="dddd"
student_name_5="eeee"
当我运行下面的脚本时,我没有得到所需的输出,无法从属性文件中读取学生姓名
student.sh
#!/bin/bash
. /student.properties
i=1
while [ $i -lt $total_student ]
do
{
std_Name=$student_name_$i
echo $std_Name
#****** my logic *******
} || {
echo "ERROR..."
}
i=`expr $i + 1`
done
输出是这样的
1
2
3
4
5
我知道脚本没有获取 $student_name_ 的任何内容,因此仅打印 $i 值。
因此,想知道如何从属性文件中读取值。
最佳答案
您可以使用${!foo}
进行变量名称插值。如果 $foo
是 "bar"
,则 ${!foo}
将为您提供 $bar
的值。在你的代码中这意味着改变
std_Name=$student_name_$i
至
var=student_name_$i
std_Name=${!var}
或者,您可以将名称存储在数组中。那么你就不必进行任何解析。
学生属性
student_names=("aaaa" "bbbb" "cccc" "dddd" "eeee")
student.sh
#!/bin/bash
. /student.properties
for student_name in "${student_names[@]}"; do
...
done
关于bash - 使用 bash shell 脚本从属性文件读取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781707/