我想逐行读取文件,然后构造一个args字符串,然后使用该字符串启动一个java应用程序。
文件test.txt包含例如这些行,列以制表符分隔:
abc def ghj kln
asd ss fdf twe
#!/bin/bash
IFS=$'\n'
while read k d a m s
do
echo java -jar test.jar -k $k -d $d -a $a -m $m -s $s
done < test.txt
不幸的是,它不起作用。 bash输出被打破:
-k abc def ghj kln -d -a -m -s
答案 0 :(得分:4)
您说这些列是以制表符分隔的,因此您应该使用\t
代替IFS
代替\n
,这意味着换行:
IFS=$'\t'
(假设输入的每一行都包含k
,d
,a
,m
,s
由标签分隔的值。< / p>
答案 1 :(得分:2)
您只需将 IFS 更改为在标签\t
上分开,而不是新行\n
:
#!/bin/bash
while IFS=$'\t' read k d a m s
do
echo java -jar test.jar -k "$k" -d "$d" -a "$a" -m "$m" -s "$s"
done < test.txt