bash - 使用 bash shell 脚本从属性文件读取多个值

标签 bash shell properties

想要使用 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/

相关文章:

bash - 从 BASH 中的变量中删除 %0D

java - 从带有参数的 shellscript 调用 java

javascript - 使用 Object.defineProperties 给出两个属性

JavaScript:字段或属性

regex - Grep 在包含 n 个文件的文件夹中查找多个模式。如果找到模式的匹配项,则创建 mkdir

bash - 如何比较 Bash 中 'if' 语句中的两个字符串变量?

linux - Telegram -cli : Script not sending message

linux - 我们能否将多次出现的字符串的行号捕获到变量中(仅最后一次出现)

node.js - 从代码执行 shell 脚本

c# - 这个 getter 每次被引用时都会调用数据库吗?