Điều này có thể đã được trả lời nhưng tôi sẽ hỏi nó. Tôi có hai phiên bản của một kịch bản (comp.sh
) -"[]" so với "[[]]" trong vỏ Bash
#!/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!
Và
#!/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
Ai đó có thể giải thích cho tôi tại sao sự khác biệt?
Ngoài ra - trong những trường hợp nào cần [ ]
được sử dụng so với [[ ]]
và ngược lại?
Câu hỏi này tương tự và có câu trả lời hay mà chỉ tới tài liệu tuyệt vời: http://stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts – malvim