09 Dec 2012

シェルスクリプトで実行したコマンドの結果の改行をそのままにする

bash 系の話だけど, $() とかバッククオートでコマンドを実行してその標準出力を得るさいに, そのままだと改行がなくなってしまう. そんな時は全体をダブルクオートでくくれば改行を残せる

$ echo $(ls -l /tmp/)
total 56 -rw------- 1 kosei wheel 849 12 7 09:13 Config-pAimbL -rw-r--r-- 1 kosei wheel 23020 12 4 22:40 debug.log drwx------ 4 kosei wheel 136 12 6 00:16 launch-8y9r7a drwx------ 3 kosei wheel 102 12 1 16:28 launch-O688DH drwx------ 3 kosei wheel 102 12 1 16:28 launch-Obe9Hd drwx------ 3 kosei wheel 102 12 1 16:28 launch-mH6LiV drwx------ 3 kosei wheel 102 12 1 16:28 launchd-156.GLXAJQ srwxrwxrwx 1 kosei wheel 0 12 1 16:29 mongodb-27017.sock drwxr-xr-x 67 kosei wheel 2278 12 4 22:53 please-sleep
bash-3.2$ echo "$(ls -l /tmp/)"
total 56
-rw-------   1 kosei  wheel    849 12  7 09:13 Config-pAimbL
-rw-r--r--   1 kosei  wheel  23020 12  4 22:40 debug.log
drwx------   4 kosei  wheel    136 12  6 00:16 launch-8y9r7a
drwx------   3 kosei  wheel    102 12  1 16:28 launch-O688DH
drwx------   3 kosei  wheel    102 12  1 16:28 launch-Obe9Hd
drwx------   3 kosei  wheel    102 12  1 16:28 launch-mH6LiV
drwx------   3 kosei  wheel    102 12  1 16:28 launchd-156.GLXAJQ
srwxrwxrwx   1 kosei  wheel      0 12  1 16:29 mongodb-27017.sock
drwxr-xr-x  67 kosei  wheel   2278 12  4 22:53 please-sleep