【问题标题】:How to read multiple strings in a file as a different variables [closed]如何将文件中的多个字符串作为不同的变量读取[关闭]
【发布时间】:2016-02-09 03:15:44
【问题描述】:

我有一个如下所示的 conf 文件内容。

文件.conf:

key name
value pswd

现在我想写一个脚本来拥有两个像上面这样的变量

脚本.sh

key="name"      #key as variable
value="pswd"    #value as variable

。 /path/to/file.conf 给了我 :- key & value command not found 错误

【问题讨论】:

    标签: file shell variables unix scripting


    【解决方案1】:

    你可以使用declare:

    while read k v; do
       declare $k="$v"
    done < file.conf
    

    然后测试这些值:

    declare -p key
    declare -- key="name"
    
    declare -p value
    declare -- value="pswd"
    

    【讨论】:

    • 在某些 shell(例如 dash)中没有“声明”。您可以将声明行替换为: eval "$k"="$v"。
    • 对,这是特定于 BASH 的。对于旧的 Bourne shell 使用 eval
    • 您好 Anubhava,感谢您的快速解决方案。只是有一个小查询-如果我的 file.conf 有一些注释行,那么它会给我以下代码错误:- File.conf ## # # key name value pswd 输出:- ./test.sh:第 2 行:声明:##=': not a valid identifier ./test.sh: line 2: declare: #=':不是一个有效的标识符。/test.sh:第 2 行:声明:`#=':不是一个有效的标识符
    • 如果我使用“eval”而不是“declare”,那么对于上述示例,它不会给我任何错误。但是如果 file.conf 文件有一个空行,那么它会给出错误“./test.sh: line 3: =: command not found”。此外,如果一行有一个文件的路径,那么它会给出一个错误“没有这样的文件或目录”。请就此提出建议。
    • 应该编辑问题以澄清次要问题;您的添加为问题添加了一个全新的元素。
    猜你喜欢
    • 2016-02-09
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多