我系统运行的 Debian 版本中的 bash 版本是:
bash --version|awk 'NR==1'
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
在Eyal Levin 对另一个 Stack Overflow 线程的回答中,它建议这样做:
Example:
$ echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
Output:
title
value2
在我的 Bash 控制台中,我运行以下命令:
debian@debian:~$ echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
titlenvalue1nvalue2nvalue3
debian@debian:~$
为什么命令在我的操作系统中输出不同的结果?
echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
出于某种原因,
echo
在不同平台上表现不同。因此,正如这个 Stack Overflow 答案所解释的那样,替换为以在不同平台上获得一致的输出
echo
。printf
知道这一点后,将您的命令更改为
printf
这样使用:或者,您可以将
-e
参数添加echo
到“启用反斜杠转义解释”,如echo
手册页所述。对此进行了测试,它可以在 Ubuntu 20.04 上的 Bash 上运行:
它也适用于 macOS Monterey (12.6) Apple 制作的怪异 Bash 版本: