63
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bashで複数行コメントアウトする方法

Last updated at Posted at 2014-03-27

概要

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
$

まとめ

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

コメントアウト、って意味では、:無し、でいいかも。

63
57
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?