zsh 中 echo 与 printf 命令行参数的不同行为

时间:2021-05-10 22:23:47

标签: shell zsh command-line-arguments parameter-expansion

我有一个简单的程序可以在 zsh 中打印命令行参数。但是,我看到 printf 与 echo 的行为不同。谁能解释一下?

#!/bin/zsh
echo "$# @ : "$@"   "
printf "\n"
printf "$# *  $*   "
printf "\n"
printf "$# @ : "$@" \n"

输出:

batman$ ./args  a b c d
4 @ : a b c d   

4 *  a b c d   
4 @ : abatman$ //also gobbles up the newline!!
batman$ 

1 个答案:

答案 0 :(得分:1)

echoprintf(和 print)是具有不同语法和行为的不同命令。阅读文档了解更多信息:

在 Zsh 中,您应该始终更喜欢 printprintf 而不是 echoecho 主要是为了与其他 shell 兼容。