在 bash 和 dash 中可靠地打印带有换行符的字符串
Posted
技术标签:
【中文标题】在 bash 和 dash 中可靠地打印带有换行符的字符串【英文标题】:Print string with newline reliably in both bash and dash 【发布时间】:2013-12-08 23:39:03 【问题描述】:我有以下脚本:
#!/bin/sh
echo "111\n111"
echo -e "222\n222"
这两个命令在 bash 和 dash 中都不起作用:
$ /bin/dash test.sh
111
111
-e 222
222
$ /bin/bash test.sh
111\n111
222
222
因为我无法确定 /bin/sh 是指向 bash 还是 dash,并且我无法确定 /bin/bash 或 /bin/dash 是否存在,所以这是一个真正的问题。我也无法拆分字符串并为换行添加一个“echo”,因为我需要将带有换行符的字符串通过管道传输到命令中。
有什么方法可以打印一个在所有 shell 中都有效的带有换行符的字符串?
【问题讨论】:
【参考方案1】:printf
应该更可靠:
$ printf "111\n111\n"
111
111
这应该在两个 shell 中以相同的方式工作。希望所有的贝壳。
【讨论】:
以上是关于在 bash 和 dash 中可靠地打印带有换行符的字符串的主要内容,如果未能解决你的问题,请参考以下文章
shell里一个let命令,用sh跑不了,但bash可以,发现bin里面sh是dash的链接,那么sh和bash功能上啥区别