这可能已经得到回答,但我还是要问。我有两个版本的脚本(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
有人可以解释一下为什么有区别吗?
另外——什么情况下应该[ ]
被使用 vs.[[ ]]
反之亦然?
[[
是 bash 内置的,不能在#!/bin/sh
脚本。你会想阅读条件命令 http://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructsbash 手册的一部分来了解其功能[[
。我想到的主要好处是:
-
==
and !=
执行模式匹配,因此右侧可以是 glob 模式
-
=~
执行正则表达式匹配。捕获的组存储在BASH_REMATCH
array.
- 布尔运算符
&&
and ||
- 用于表达式分组的括号。
- 没有分词,因此不必严格引用变量。
主要缺点:您的脚本现在是特定于 bash 的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)