【问题标题】:Different behaviour with echo vs printf command line arguments in zshzsh 中 echo 与 printf 命令行参数的不同行为
【发布时间】:2021-08-01 07:45:16
【问题描述】:

我有一个简单的程序来打印 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$ 

【问题讨论】:

  • 许多不同之处。例如,printf 将第一个参数解释为格式说明符。当您使用示例脚本执行./args '%s %s x y` 时,您可以看到效果。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多