Надежно печатать строку с новой строкой как в bash, так и в тире

У меня есть следующий скрипт:

#!/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 существуют, это реальная проблема. Я также не могу разделить строку и поместить одно «эхо» для новой строки, потому что мне нужно передать строку с новой строкой в ​​​​команду.

Есть ли способ напечатать строку с новой строкой, которая работает во всех оболочках?


person Robby75    schedule 24.11.2013    source источник


Ответы (1)


printf должно быть более надежным:

$ printf "111\n111\n"
111
111

Это должно работать одинаково в обеих оболочках. Надеюсь, все снаряды.

person janos    schedule 24.11.2013