非常相似的to this question。
我正在使用BASH中的自动化脚本迭代一些内容。脚本偶尔会遇到"-n“,echo会尝试解释这一点。
尝试执行此操作:
$ POSIXLY_CORRECT=1 /bin/echo -n和
$ POSIXLY_CORRECT=1 /bin/echo "-n"但它每次都解释了这个论点。
然后是这个,它可以工作,但它可以命中字符串中的转义字符,这就是为什么我不想将空字符应用于所有输入并使用-e。
$ echo -e "\x00-n"
-nprintf是可能的,但除非没有其他选项(并非所有机器都将printf作为实用程序),否则应避免使用printf。
$printf "%s" "-n"
-n那么有没有办法让echo打印"-n“呢?
发布于 2012-11-07 04:24:06
printf应该是所有shell中的内置组件,除非您的某些机器有非常旧的shell版本。它已经内置在bash中很长一段时间了。它可能比echo -e更可移植。
否则,就没有办法获得它所关心的echo选项。
编辑:从an answer到另一个类似的问题;使用这个方便的无数字版权保留的包装器来避免引用printf的问题:
ech-o() { printf "%s\n" "$*"; }(这是ech-o,就像“没有选项”一样)
发布于 2012-11-07 05:13:46
如果在字符串前面加上一个字符(例如,“x”),然后使用cut动态删除该字符,该怎么办:
echo "x-n" | cut -c 2-发布于 2012-11-07 04:28:23
如果使用名称sh调用Bash,它将模拟sh,其中echo不能使用-n选项。不过,我不确定这是否符合您的需求。
$ /bin/sh -c 'echo -n'https://stackoverflow.com/questions/13258664
复制相似问题