質問

引用符付きのテキストをファイルからシェル変数に分散させる方法は?
も、'#'で始まる行を無視しますか?

テキストファイルを持っていると言ってみましょう

8723 "full name" "more data here"
#5002 "another name" "bla bla bla"
7129 "single" blablabla
3910 noquote "bla bla bla"
.

を実行するスクリプトを書き込みたい
#!/bin/sh
myscript <KEY> "<FULL NAME>" "<MORE DATA>"
.

テキストファイル内の各行に。
それが簡単になると、単一の単語で構成されている場合でも、テキストファイル内のフルネームとMoredataが常に引用符で囲まれていると仮定することができます。


私は簡単な

を試しました
#!/bin/sh
while read key name extra
do
    echo "myscript $key \"$name\" -- \"$extra\""
    #myscript $key "$name" "$extra"
done < list.txt
.

しかし、それは単一のシェル変数の引用符内の値をグループ化しません。
出力は

です
myscript 8723 ""full" -- "name" "more data here""
myscript #5002 ""another" -- "name" "bla bla bla""
myscript 7129 ""single"" -- "blablabla"
myscript 3910 "noquote" -- ""bla bla bla""
. 代わりに、

を入手したいのですが
myscript 8723 "full name" -- "more data here"
myscript 7129 "single" -- "blablabla"
myscript 3910 "noquote" -- "bla bla bla"
.

もちろん、元のテキストファイルのすべての行にmyscriptを追加し、そのファイルをスクリプトまたはCプログラムを作成してください。

役に立ちましたか?

解決

#!/bin/sh
while read key name extra
do
    eval myscript $key $name $extra
done <(grep -v "^#" list.txt)
.

他のヒント

sed -e '/^[^#]/s/^/myscript /' list.txt
.

編集:実行するには:

sed -e '/^[^#]/s/^/myscript /' list.txt | bash
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top