如何在读取 属性 文件密钥后将其存储到 shell 脚本中的变量中

How to store property file keys into variables in a shell script after reading them

如果我有给定的 属性 文件和 shell 脚本。如何将每个键值对存储在不同的变量中?

例如,如果我读取 属性 文件 thing.properties,其中包含:

USERNAME = "Me"
PASSWORD = "Secret"
DB_NAME = "THINGDB"

如何将这些密钥中的每一个存储在标记为 thingUSERNAME、thingPASSWORD 等的 shell 脚本中各自的变量中(变量名称可以是任何名称,只要它包含文件和密钥的一些相似之处即可)

(注意这必须在 sh 文件中完成) 欢迎任何意见

您可以使用 eval。不过请小心使用此命令。这可能是毁灭性的。不幸的是,与 bash 不同,sh 不支持 declare

$ cat property.txt
USERNAME = "Me"
PASSWORD = "Secret"
DB_NAME = "THINGDB"

$ cat shell.sh
#!/bin/sh

while IFS= read -r line; do
    key="${line%% =*}"
    value="${line#*= }"
    eval "$key"="$value" # For ash, dash, sh.
    # declare "$key"="$value" # For bash, other shells.
done < property.txt

echo "username: $USERNAME"
echo "password: $PASSWORD"
echo "db_name: $DB_NAME"

$ ./shell.sh
username: Me
password: Secret
db_name: THINGDB