我的脚本中有 echo 的问题:
echo
echo -n "Some string..."
版画
-n Some string...
并移动到下一行 . 在控制台中,它正确地工作而没有换行:
Some string...
试试吧
echo -e "Some string...\c"
它按预期对我有效(正如我从你的问题中所理解的) .
请注意,我从 man 页面获得了此信息 . man 页面还注意到shell可能有自己的 echo 版本,我不确定 bash 是否有自己的版本 .
man
bash
如果在if中使用echo和其他命令(如“read”),它可能会忽略该设置,无论如何它都会跳转到新行 .
echo 命令有多个版本,具有不同的行为 . 显然,用于脚本的shell使用的版本无法识别 -n .
-n
printf 命令具有更加一致的行为 . echo 适用于像 echo hello 这样的简单事情,但我建议使用 printf 来处理更复杂的事情 .
printf
echo hello
您使用的是什么系统,以及您的脚本使用的shell是什么?
bash 有一个名为"echo"的"built-in"命令:
$ type echo echo is a shell builtin
另外,有一个"echo"命令是一个正确的可执行文件(即shell分叉和执行 /bin/echo ,而不是解释 echo 并执行它):
/bin/echo
$ ls -l /bin/echo -rwxr-xr-x 1 root root 22856 Jul 21 2011 /bin/echo
echo 的WRT对 \c 和 -n 的行为各不相同 . 你最好的选择是使用 printf ,它可以在我看到的四种不同的* NIX口味中使用:
\c
$ printf "a line without trailing linefeed" $ printf "a line with trailing linefeed\n"
4 回答
试试吧
它按预期对我有效(正如我从你的问题中所理解的) .
请注意,我从
man
页面获得了此信息 .man
页面还注意到shell可能有自己的echo
版本,我不确定bash
是否有自己的版本 .如果在if中使用echo和其他命令(如“read”),它可能会忽略该设置,无论如何它都会跳转到新行 .
echo
命令有多个版本,具有不同的行为 . 显然,用于脚本的shell使用的版本无法识别-n
.printf
命令具有更加一致的行为 .echo
适用于像echo hello
这样的简单事情,但我建议使用printf
来处理更复杂的事情 .您使用的是什么系统,以及您的脚本使用的shell是什么?
bash
有一个名为"echo"的"built-in"命令:另外,有一个"echo"命令是一个正确的可执行文件(即shell分叉和执行
/bin/echo
,而不是解释echo
并执行它):echo
的WRT对\c
和-n
的行为各不相同 . 你最好的选择是使用printf
,它可以在我看到的四种不同的* NIX口味中使用: