读取文件shell bash时创建键值对
我在custom_target.config中有一个文件。我有一个shell脚本,它将读取这个配置文件。配置文件按文件名和我试图将其移动到的目标目录进行分割。我想知道最好的方法是分割文件中的行并开始将文件移动到相应的位置读取文件shell bash时创建键值对,bash,shell,parsing,unix,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 -
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"
而IFS=''读取-r行| |[[-n“$line”];做
对于$line中的元素
做
echo$元素
完成
#echo“从文件读取的文本:$line”
完成<“$1”
让阅读
进行分词,而不是信任$line
不要做任何奇怪的事情
while read -r key value; do
echo "KEY: $key"
echo "VALUE: $value"
done < "$1"
读取时-r键值;做
echo“KEY:$KEY”
回显“值:$VALUE”
完成<“$1”
您可以使用Awk:
复制文件
移动文件
打印要执行的字符串:(cp文件\u名称路径
)
$1
-第一个用空格分隔的字段(文件名)
$2
-第二个字段,用空格分隔(路径名)
awk'{printf“cp”$1”“$2}'自定义_target.config
使用`执行输出字符串感觉这应该在*nix上结束。我刚才也在看同样的东西:)你想把
EXAMPLE\u文件
移到/home/user/EXAMPLE
?在IFS=read-r file dir时尝试;执行echo mv“${file}”“${dir}”;完成<“$1”并在需要时删除
echo`。善待您的脚本:确保为它们提供有效的POSIX文本文件(以换行结尾),而不是使用类似于| |[[-n$line]]]
的黑客将其弄乱。
`awk '{printf "cp "$1" "$2}' custom_target.config`
`awk '{printf "mv "$1" "$2}' custom_target.config`