bash:在函数内打印时有没有换行?

ttu*_*box 0 bash

我会说最安全的选择是打印结果而不换行,因为当命令通过管道传输到另一个不希望其输入以行分隔的命令时,您可能会遇到麻烦,例如以下脚本:

function test_nl {
    echo result
}

function test_no_nl {
    printf %s result
}

test_nl | xxd -p | wc -c
#prints 15
test_no_nl | xxd -p | wc -c
#prints 13
Run Code Online (Sandbox Code Playgroud)

有没有 test_nl 方法更好的情况?

ilk*_*chu 5

要看。如果您一直在查看确切的输出是什么,就像xxd上面一样,那么换行符可能只是一个麻烦。但是对于一般用途,请考虑像uname, uptime,date和Well 之类的实用程序,基本上任何此类都会打印尾随换行符,因此这绝对是惯例。如果在命令行上运行的程序不打印尾随换行符,许多 shell 将在同一行打印提示,这看起来很难看(如下)。此外,例如命令替换删除尾随换行符只是为了弥补这一点。

bash$ date -u | tr -d '\n' 
Sat 14 Nov 2020 03:48:19 PM UTCbash$ 
Run Code Online (Sandbox Code Playgroud)