概要
bashで複数行コメントアウトするときに
全部の行の頭に「#」を入力してたのは…私です。
bashで複数行コメントアウトするにはどうしたらいいの?
: と << を組み合わせればできる!
bash
: <<'#__CO__'
aaa
bbb
ccc
ddd
# __CO__
: (何もしない、戻り値も0)
while true
も以下のように表せる
bash
while :
do
echo "何かしらの処理"
done
<< (ヒアドキュメント)
<< の後に続く文字列が入力されるまでの入力を
まとめて標準入力としてコマンドに渡すことができる
$ cat << __EOF__
> aaa
> bbb
> ccc
> ddd
> __EOF
> ___
> __EOF__
と入力すると
aaa
bbb
ccc
ddd
__EOF
___
と返って来る。
//20140328追記
: なしでもコメントアウトできる!
<< "#__CO__"
aaa
bbb
ccc
ddd
# __CO__
: あり?なし? << "#__CO__"? << "__CO__"?
サンプル作ってbash -x してみる
サンプル
:あり、#あり
colon_on_sharp_on.sh
# !/bin/bash
# : あり
# #__CO__
: << "#__CO__"
date
DATE=`date +%Y%m%da && date`
echo $DATE
aaa
# __CO__
:あり、#なし
# !/bin/bash
# : あり
# __CO__
: << __CO__
date
DATE=`date +%Y%m%d && date`
echo $DATE
aaa
__CO__
:なし、#あり
colon_off_sharp_on.sh
# !/bin/bash
# : なし
# #__CO__
<< "#__CO__"
date
DATE=`date +%Y%m%d && date`
echo $DATE
aaa
# __CO__
:なし、#なし
# !/bin/bash
# : なし
# __CO__
<< __CO__
date
DATE=`date +%Y%m%d && date`
echo $DATE
aaa
__CO__
結果
:あり、#あり
「何もしない」を『実行』する
$ $ bash -x colon_on_sharp_on.sh
+ :
$
:あり、#なし
「何もしない」を『実行』するうえ、コメントアウトしたはずの行もデバッグに表示される
$ bash -x colon_on_sharp_off.sh
+ :
++ date +%Y%m%d
++ date
$
:なし、#あり
全く何も出ない!
$ bash -x colon_off_sharp_on.sh
$
:なし、#なし
コメントアウトしたはずの行もデバッグに表示される
$ bash -x colon_off_sharp_off.sh
++ date +%Y%m%d
++ date
$
まとめ
-
:- (デバッグ時も含めて)明示的に「何もしない」を通った確認をするなら 「: 有り」
- 本当になにもしないで!ってひとは 「:無し」
-
#- 必要。
- 付けないと、コメントアウトしたつもりがシェルは中身を解析(?)している
コメントアウト、って意味では、:無し、でいいかも。