首页 文章

'echo'在shell脚本中没有换行符

提问于
浏览
385

我的脚本中有 echo 的问题:

echo -n "Some string..."

版画

-n Some string...

并移动到下一行 . 在控制台中,它正确地工作而没有换行:

Some string...

4 回答

  • 103

    试试吧

    echo -e "Some string...\c"
    

    它按预期对我有效(正如我从你的问题中所理解的) .

    请注意,我从 man 页面获得了此信息 . man 页面还注意到shell可能有自己的 echo 版本,我不确定 bash 是否有自己的版本 .

  • 75

    如果在if中使用echo和其他命令(如“read”),它可能会忽略该设置,无论如何它都会跳转到新行 .

  • 410

    echo 命令有多个版本,具有不同的行为 . 显然,用于脚本的shell使用的版本无法识别 -n .

    printf 命令具有更加一致的行为 . echo 适用于像 echo hello 这样的简单事情,但我建议使用 printf 来处理更复杂的事情 .

    您使用的是什么系统,以及您的脚本使用的shell是什么?

  • 2

    bash 有一个名为"echo"的"built-in"命令:

    $ type echo
    echo is a shell builtin
    

    另外,有一个"echo"命令是一个正确的可执行文件(即shell分叉和执行 /bin/echo ,而不是解释 echo 并执行它):

    $ ls -l /bin/echo
    -rwxr-xr-x 1 root root 22856 Jul 21  2011 /bin/echo
    

    echo 的WRT对 \c-n 的行为各不相同 . 你最好的选择是使用 printf ,它可以在我看到的四种不同的* NIX口味中使用:

    $ printf "a line without trailing linefeed"
    $ printf "a line with trailing linefeed\n"
    

相关问题