echo 命令的神秘行为

echo 命令的神秘行为

当我们需要在echo命令中使用转义序列字符时,我们必须使用该-e选项。例如

echo -e "Enter your name : \c"

但是当我们在 shell 程序(.sh 文件)中包含此类语句时,它会产生一个神秘的错误。它会打印

-e Enter your name : 

它不需要-e带有 echo 命令的选项,就像我们这样写

echo "Enter your name : \c"

它显示的输出没有错误,但是在 shell 中不起作用。

那么原因是什么呢?我正在使用 bash shell 和 Ubuntu 15.04 版本。

答案1

我猜你没有使用shebang(#! /bin/bash作为脚本的第一行)。在这种情况下,脚本使用运行/bin/sh,即/bin/dash。并且echodash支持非标准-e(请查看POSIX 标准)。你真的不应该使用echo -e。使用printf更便携的行为。参见为什么printf比 echo` 更好?在 Unix 和 Linux 上。以下命令的行为应相同:

bash -c 'printf "%s" "Enter your name"'
dash -c 'printf "%s" "Enter your name"'

相关内容