見下面 testcolon.sh
#!/bin/bashset -x 是 debugtrace,可以把每行要執行前先 print 到 terminal。
set -x
echo "COLON test"
: echo "$*"
: $1
: [ $1 == bb ] && echo success || echo fail
./testcolon.sh aa bb cc
+ echo 'COLON test'我們可以看到 "$*" 跟 $1 都被 expand 出來。最後 echo 出 success 是因為 : command 一定會 return 0。要注意,它不是把整行「註解」掉,它跟 # 不同,不是拿來當註解用途。
COLON test
+ : echo 'aa bb cc'
+ : aa
+ : '[' aa == bb ']'
+ echo success
success
最後要再強調一次,: 是 command,所以下面第一行的寫法是正確的,但第二行是錯誤的。
1) echo "comment test1"; date # this is a comment
2) echo "comment test2"; date : this is a comment