2016-07-11 3 views
2

ファイルから1行ずつ読み込み、args文字列を作成してから、この文字列を使ってJavaアプリケーションを起動します。Bashファイルを1行ずつ読み込み、タブで分割して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

を?? 'test.txt'から一度に5行を読み込み、各行を変数に格納しようとしていますか? (おそらく、変数を使用している場所で変数を引用する必要があります)要するに、望ましい出力は何ですか? –

+1

'IFS'は、*レコード*区切り記号ではなく、*フィールド*区切り記号です。 – chepner

答えて

4

をあなたは列がタブで区切られていると言うので、あなたは、IFS代わりの\nいる\tを使用する必要があります意味改行:

IFS=$'\t' 

(入力の各行は、kの値が含まれていると仮定すると、damsはタブで区切られています)。

+0

わかりました。 IFS:内部フィールドセパレータ。どうも – dit

2

あなただけのタブを分離するために、あなたのIFSを変更する\tではなく、新しい行\n持っている:あなたが実際に `K 'と` D'になどしたいですかどのような値

#!/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 
関連する問題