"[ ]" vs. "[[ ]]" in Bash shell
bash, if-statement, scripting, shell, string
Solution
`test`'s string equality operator doesn't do globs.
$ [ abc = *bc ] ; echo $?
1
$ [[ abc = *bc ]] ; echo $?
0
Problem
This may be answered already but I am going to ask it anyways. I have two versions of a script (`comp.sh`)- ``` #!/bin/sh export tDay=$(date '+%Y%m%d') newfile="filename_$tDay" filename="filename_20120821100002.csv" echo $newfile $filename if [ $filename = *$newfile* ] then echo "Matched" else echo "Not Matched!" fi Output: $ ./comp.sh filename_20120821 filename_20120821100002.csv Not Matched! ``` And ``` #!/bin/sh export tDay=$(date '+%Y%m%d') newfile="filename_$tDay" filename="filename_20120821100002.csv" echo $newfile $filename if [[ $filename = *$newfile* ]] then echo "Matched" else echo "Not Matched!" fi $ comp.sh filename_20120821 filename_20120821100002.csv Matched ``` Could someone explain me Why the difference? Also - under what circumstances should `[ ]` be used vs. `[[ ]]` and vice versa?