【问题标题】:how to read from a file and turn it's contents to multiple variables in bash如何从文件中读取并将其内容转换为bash中的多个变量
【发布时间】:2019-07-20 01:29:25
【问题描述】:

我有一个格式如下的文件:
1个
2个
3c
我想循环遍历它,将第二个参数转换为一个变量,并将每行的第一个参数存储在该变量中。 因此,在这种情况下,创建一个变量“a”并将 1 存储在其中,创建 b 并将 2 存储在其中,依此类推。有简单的方法吗?

【问题讨论】:

  • 到目前为止你尝试了什么?请给我们一些努力。
  • while read -r num char; do echo "number: $num" "character: $char"; done < file?

标签: bash file loops variables


【解决方案1】:

使用 namerefs 执行间接赋值。

while read -r value name; do
    declare -n var=name
     var=$value
done
declare +n var  # optional; makes var stop being a nameref

bash 4.3 之前,您可以更普遍地使用declare(但更脆弱一些)。

while read -r value name; do
    declare "$name=$var"
done < file

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    while read line ; do
     Var=$(echo $line |awk '{print $2}')
     Value=$(echo $line |awk '{print $1}')
     export $Var=$Value
    done < file
    
    echo $a
    echo $b
    echo $c
    

    产生:

    > ./script.sh
    1
    2
    3
    

    【讨论】:

    • 这是正确的想法,但可以大大改进。
    • 谢谢,虽然它有效,但我得到一个:export: `=': not a valid identifier 错误。如果我删除 $ 它不起作用
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 2019-11-30
    • 2011-10-02
    • 2022-10-17
    • 2011-06-10
    • 2019-08-27
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多