1

私はこれを持っています

while read -r line
do
   echo -e "$line\r"
done <<< $keys

$keys をそのまま印刷すると、30k 行が表示されます。

上記のようにエコーを実行すると、出力として1行しか得られません。

すべての行をフィルタリングしてから出力する必要があります。

  1. どうしてこうなった(上書き)
  2. どうすればそれを防ぐことができますか?
4

2 に答える 2

1

これは\rechoコマンドが原因で発生しています。

それを次のように置き換えて解決されます。

echo "$line"

変数を呼び出すには、"$keys"その形式を維持するために使用する方がよいことに注意することも重要です。

すべて一緒に:

while read -r line
do
   echo -e "$line"
done <<< "$keys"
于 2013-11-03T21:31:07.087 に答える
1

もっと引用符を使う

while read -r line
do
   echo -e "$line\r"
done <<< "$keys"

の引用符を観察してください<<< "$keys"

見て:

$ printf -v keys '%s\n' "key one" "key two"
$ echo $keys
key one key two
$ # Oh dear
$ # Now with quotes:
$ echo "$keys"
key one
key two

$ # Yeah :)
$ # Same with a here string:
$ while read line; do echo "$line"; done <<< $keys
key one key two
$ # Oh dear :(
$ # Now with quotes:
$ while read line; do echo "Read: $line"; done <<< "$keys"
Read: line one
Read: line two
$ # Done \o/

この投稿では、次のことを学びました。

  • より多くの引用符を使用するには、
  • より多くの引用符を使用するには、
  • より多くの引用符を使用するには、
  • より多くの引用符を使用するには、
  • より多くの引用符を使用するには、
  • より多くの引用符を使用します。

今思い出して、

名言を忘れるたびに、神は子猫を殺す

于 2013-11-03T21:31:19.900 に答える