[英]Difference between printf and echo in Bash
$ printf 'apple' | wc -m
5
$ echo 'apple' | wc -m
6
为什么printf可打印5个字符,而echo可打印6个字符?
bash
手册页中第一条echo
的输入句子(强调我的意思):
输出args,以空格分隔, 后跟换行符 。
printf
手册页条目的第一句:
在格式的控制下,将格式化的参数写入标准输出。
printf
只打印格式显示的内容; 它不附加隐含的换行符。
echo "foo"
和printf "foo"
之间可能还有其他区别,具体取决于foo
是什么。 POSIX规范在实现echo
为实现提供了广泛的自由裁量权,可能是避免从各种历史实现中选择一种作为标准。 当您依靠精确的输出时,请使用printf
。
这是区别..
$printf 'abcd'
abcd$ echo 'abcd'
abcd
$
如您所见,其他字符是换行符\\n
Echo命令在字符串的末尾添加“ \\ n”字符。 也就是说,当我们使用echo命令打印内容时,它会自动传递到新行。 但是printf不会这样做。
回显“ string”等于“ string \\ n”,并打印“ string”等于“ string” 。
因此,“ wc -m”命令的输出是不同的。
在执行命令后,Printf不提供新行,但在执行命令后,echo提供新的行。 请参阅以下代码输出。
使用Printf:
a = 0
而[$ a -lt 10]执行printf $ aa = expr $a + 1
完成
o / p:0123456789
回声的使用:
a = 0
而[$ a -lt 10]做echo $ aa = expr $a + 1
done
o / p: 它将以列方式打印,因为此窗口不以列方式打印,请尝试执行此代码,它将更好地理解。
0 1 2 3 4 5 6 7 8 9
您可以通过给出以下命令echo -n $ a来删除echo中的新行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.