私はシェルスクリプトのデバッグに使用しており、文字列を確認できるようにフォームから新しい行やキャリッジリターンを印刷するecho
方法を知りたいと思います。可能ですか?echo
\n
\r
\n
\r
ベストアンサー1
ksh93、zsh、またはbashのGNU実装またはprintf
組み込み関数は、文字列printf
に制御文字が含まれている場合、printf %q
ksh93で引用されているように文字列を出力するのと同様の操作を実行します。$'...'
入力するまたは改行:
$ 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'