【问题标题】:Print string with newline reliably in both bash and dash在 bash 和 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 中都有效的带有换行符的字符串?

【问题讨论】:

    标签: bash dash-shell


    【解决方案1】:

    printf应该更可靠:

    $ printf "111\n111\n"
    111
    111
    

    这应该在两个 shell 中以相同的方式工作。希望所有的贝壳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多