我有这个
while read -r line
do
echo -e "$line\r"
done <<< $keys
其中 $keys,如果按原样打印,则显示 30k 行。
当像上面那样做 echo 时,我只得到一行作为输出。
我需要过滤每一行然后输出。
- 为什么会发生这种情况(覆盖)
- 我怎样才能防止它发生?
我有这个
while read -r line
do
echo -e "$line\r"
done <<< $keys
其中 $keys,如果按原样打印,则显示 30k 行。
当像上面那样做 echo 时,我只得到一行作为输出。
我需要过滤每一行然后输出。
这是因为\r
您的echo
命令而发生的。
将其替换为:
echo "$line"
同样重要的是要注意,要调用变量,您最好使用"$keys"
它来保持其格式。
全部一起:
while read -r line
do
echo -e "$line"
done <<< "$keys"
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/
在这篇文章中,您学到了:
现在记得,