sudoとかのsh -cで使うechoで改行を出力する

sudoとかのsh -cで使うechoで改行を出力したくなりました。
echoのみであれば\nを使えば改行されます。

$ echo "[Service]\nLimitNOFILE=1006500\nLimitNPROC=1006500"

リダイレクトで書き出しを行いたかったのでsh -cに渡したのですが改行されません。

$ sudo sh -c 'echo "[Service]\nLimitNOFILE=1006500\nLimitNPROC=1006500" '
[Service]\nLimitNOFILE=1006500\nLimitNPROC=1006500

バックスラッシュを重ねてもダメ。

$ sudo sh -c 'echo "[Service]\\nLimitNOFILE=1006500\\nLimitNPROC=1006500" '
[Service]\nLimitNOFILE=1006500\nLimitNPROC=1006500

調べたところ-eオプションを使えばOKでした。

$ sudo sh -c 'echo -e "[Service]\\nLimitNOFILE=1006500\\nLimitNPROC=1006500"'
[Service]
LimitNOFILE=1006500
LimitNPROC=1006500

参考

echoコマンドで改行やタブを扱うには@Linux bash : Mazn.net
UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中身を表示することができます。つまりCでいうprintf、JAVAでいうSystem.out.printlnみたいなものですね。 # echo "hoge" ho...

コメント

タイトルとURLをコピーしました