在读取文件shell bash时创建键值对

时间:2018-03-21 16:53:26

标签: bash shell parsing unix

我在custom_target.config中有一个文件。我有一个shell脚本,将通过此配置文件读取。配置文件由文件名和我尝试将其移动到的目标目录拆分。我想知道最好的方法是在文件中拆分行并开始将文件移动到相应的位置。

EXAMPLE_FILE /home/user/example
EXAMPLE_FILE_1 /home/user/example
EXAMPLE_FILE_1 /home/user/example/subfolder

到目前为止的尝试:

while IFS='' read -r line || [[ -n "$line" ]]; do
    for element in $line
    do
      echo $element
    done
    #echo "Text read from file: $line"
done < "$1"

2 个答案:

答案 0 :(得分:1)

read执行单词拆分而不是信任$line不要做任何奇怪的事情。

while read -r key value; do
  echo "KEY: $key"
  echo "VALUE: $value"
done < "$1"

答案 1 :(得分:0)

你可以使用Awk:

复制文件

  `awk '{printf "cp "$1" "$2}' custom_target.config`

移动文件

  `awk '{printf "mv "$1" "$2}' custom_target.config`

打印要执行的字符串:(cp file_name path

$1 - 第一个以空格分隔的字段(文件名)

$2 - 以空格分隔的第二个字段(路径名)

awk '{printf "cp "$1" "$2}' custom_target.config

使用``执行输出字符串