概要
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
$
まとめ
-
:
- (デバッグ時も含めて)明示的に「何もしない」を通った確認をするなら 「: 有り」
- 本当になにもしないで!ってひとは 「:無し」
-
#
- 必要。
- 付けないと、コメントアウトしたつもりがシェルは中身を解析(?)している
コメントアウト、って意味では、:
無し、でいいかも。