変数に格納されている複数行の文字列を繰り返します。

変数に格納されている複数行の文字列を繰り返します。

読むこのように書くのは良いことではありませんfor line in $(command)。正しい方法は次のとおりです。

command | while IFS= read -r line; do echo $line; done

これは素晴らしい作品です。しかし、私が繰り返したいことがaの内容ならどうなりますか?変える、注文の直接的な結果ではありませんか?

たとえば、次のファイルを作成するとしますquickfox

The quick brown
foxjumps\ over -
the
lazy ,
dog.

私は次のことができるようにしたいです。

# This is just for the example,
# I could of course stream the contents to `read`
variable=$(cat quickfox);
while IFS= read -r line < $variable; do echo $line; done; # this is incorrect

ベストアンサー1

bashやzshなどの最新のシェルには、文字列を入力として受け入れる非常に便利な「<<<」リダイレクタがあります。だからあなたはします

while IFS= read -r line ; do echo $line; done <<< "$variable"

そうでなければいつでもできる

echo "$variable" | while IFS= read -r line ; do echo $line; done

おすすめ記事