当我们需要在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
。并且echo
不dash
支持非标准-e
(请查看POSIX 标准)。你真的不应该使用echo -e
。使用printf
更便携的行为。参见为什么printf
比 echo` 更好?在 Unix 和 Linux 上。以下命令的行为应相同:
bash -c 'printf "%s" "Enter your name"'
dash -c 'printf "%s" "Enter your name"'