改行とキャリッジリターンを\ nと\ rで印刷するには、echoまたはprintfを使用します。

改行とキャリッジリターンを\ nと\ rで印刷するには、echoまたはprintfを使用します。

私はシェルスクリプトのデバッグに使用しており、文字列を確認できるようにフォームから新しい行やキャリッジリターンを印刷するecho方法を知りたいと思います。可能ですか?echo\n\r\n\r

ベストアンサー1

ksh93、zsh、またはbashのGNU実装またはprintf組み込み関数は、文字列printfに制御文字が含まれている場合、printf %qksh93で引用されているように文字列を出力するのと同様の操作を実行します。$'...'入力するまたは改行:

$ string=$'foo\rbar\n' ksh93 -c 'printf "%q\n" "$string"'
$'foo\rbar\n'
$ string=$'foo\rbar\n' zsh -c 'printf "%q\n" "$string"'
foo$'\r'bar$'\n'
$ string=$'foo\rbar\n' bash -c 'printf "%q\n" "$string"'
$'foo\rbar\n'
$ string=$'foo\rbar\n'; /usr/bin/printf "%q\n" "$string"
'foo'$'\r''bar'$'\n'

zshシェルでは、qqqqパラメータ拡張フラグを使用してこれらの引用$'...'符を無条件に使用することもできます。

$ s1=$'\r\n' s2=foobar
$ print -rC1 -- ${(qqqq)s1} ${(qqqq)s2}
$'\r\n'
$'foobar'

おすすめ記事