0

シェルスクリプトでは、通常、変数に「${variable} end」で文字列を追加します。ただし、すべての行を「end」で追加するファイル「file.txt」があります。したがって、コマンド ラインでは、たとえばfor i in `cat file.txt`; do echo "${i} end"; done. ただし、「end」(スペースを追加) という単語は追加されませんが、追加されます。while ループを使用すると、同じことが起こります。そこで何が起こっているのか誰か教えてくれませんか?LinuxMint13 64bit (Cinammon と Mate の両方) で GNU bash バージョン 4.2.37 を使用しています。

助けてくれてありがとう!

4

3 に答える 3

1

here で説明されているように、for ループの代わりに while ループを使用する必要があります。

while IFS= read -r line
do
    echo "$line end"
done < "file.txt"
于 2013-02-26T20:06:40.197 に答える
0

ループを使用することが唯一のオプションですか? すべての行の最後に何かを追加したいだけなら、おそらく使いやすいでしょうsed:

sed -ie 's/.*/& end/' file.txt
于 2013-02-26T22:31:42.230 に答える
0

それはあなたの構文かもしれません-忘れないでくださいdo. あれは:

for i in `cat file.txt`; do echo "${i} end"; done

各行に「end」を追加して新しいファイルを作成する方法を尋ねている場合は、これを試してください。

for i in `cat file.txt`; do echo "${i} end" >> some_new_file; done
于 2013-02-26T20:00:17.160 に答える