bash - echo "-n"不会打印-n?

标签 bash echo

非常相似to this question .

我正在使用 BASH 中的自动脚本迭代一些内容。有时脚本会遇到“-n”,echo 会尝试解释它。

尝试这样做:

 $ POSIXLY_CORRECT=1 /bin/echo -n

 $ POSIXLY_CORRECT=1 /bin/echo "-n"

 

但它每次都解释参数。

然后这个可行,但它可能会命中字符串中的转义字符,这就是为什么我不想将空字符应用于所有输入并使用 -e。

$ echo -e "\x00-n"
-n

printf 是可能的,但除非没有其他选择(并非所有机器都将 printf 作为实用程序),否则应避免使用。

$ printf "%s" "-n"
-n

那么有没有办法让 echo 打印“-n”?

最佳答案

printf 应该内置在所有的 shell 中,除非你的某些机器有非常旧的 shell 版本。很长一段时间以来,它一直是 bash 的内置功能。它可能比 echo -e 更便携。

否则,真的没有办法获得它关心的 echo 选项。

编辑:来自an answer另一个类似的问题;通过使用这个方便的 no-digital-rights-retained 包装器避免 printf 的引用问题:

ech-o() { printf "%s\n" "$*"; }

(这是 ech-o,如“无选项”)

关于bash - echo "-n"不会打印-n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13258664/

相关文章:

python - 使用 Bash 脚本从文件夹名称中删除前 4 个字母

linux - 加速/并行化大规模硬链接(hard link)循环

linux - 当另一个进程在 Linux 中结束时终止后台进程

linux - 如何替换字符串的前k个字符?

php - WordPress:- get_the_date() 函数返回错误的日期

mysql - 向变量满足条件的行添加不同的类/样式

linux - 行尾(新行)在 bash 中转义

PHP echo xyz 如果循环中的行不包含数据

bash - 循环查找文件位置,直到文件存在于 bash 中

bash - echo "#!"失败 -- "event not found"