Bash逐行读取文件,按选项卡分割,发送到java应用程序

时间:2016-07-11 11:55:00

标签: java bash

我想逐行读取文件,然后构造一个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

2 个答案:

答案 0 :(得分:4)

您说这些列是以制表符分隔的,因此您应该使用\t代替IFS代替\n,这意味着换行:

IFS=$'\t'

(假设输入的每一行都包含kdams由标签分隔的值。< / 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