What's the difference between [ and [[ in Bash?
我看了bash手册页,
所以我想知道,在bash中,
它的特征是syntactical的壳,它有一些特殊的操作系统是不是有
1 | if [ -f"$file" ] |
对正确处理空字符串或文件名和在他们的空间。在与
1 | if [[ -f $file ]] |
因为它是一个syntactical特征,它让你
它有美好的
1 | if ["$answer" = y -o"$answer" = yes ] |
你可以用这个
1 | if [[ $answer =~ ^y(es)?$ ]] |
它甚至让你访问的捕获组,它
你得到免费的通配符模式匹配)。也许你不了解是如何严格的类型。也许你是好的,如果用户类型的Y -什么。有你覆盖。
1 | if [[ $ANSWER = y* ]] |
这是保持头脑的bash扩展,所以如果你的写作是HS -兼容的脚本你需要与
国有企业也
- bash常见问题解答"什么是测试之间的差异,和[ [ [???????"
- bash Bash测试规范
- 什么是服务器的故障之间的差异,在双和单Bash的东西吗?
- 该
test [ 是内置的,和喜欢的人test 二厂试验)- 关于该作品的所有其他
[ SH型壳在许多UNIX环境 - 只支持单一的条件。试验用多
&& || bash和运营商必须在单独的东西。 - 是不是"不"natively支持运营商。反演使用条件,在使用的第一架
! 壳装置的反相命令的返回值。 == 和!= 是字面字符串比较
- 关于该作品的所有其他
[[ 是重击- bash的特异性是可以实现的,但其他人有类似的壳结构。不希望它在一个老式的UNIX下SH。
== != bash和模式匹配规则适用于国有企业"模式匹配",在man bash - 有
=~ 正则表达式匹配算子 - 允许使用的parentheses和
! && 和|| 逻辑算子,例如将在子表达式
除了这个,他们再漂亮的最相似的个体他们之间identically试验工作,比如当你需要得到的东西,只有将不同的试验和/或/和逻辑NOT操作。
在派对上,
最重要的,你将清晰的差分编码。是的,是的,你说的是真的,上面的* [ ],但带来了你的代码,你会希望在网络中与高层次的语言,特别是关于对与(&;&;),或(| |)和NOT(!)运营商。因此,当你在移动系统和语言,你将能够解释脚本。这使你的生活更容易。把这个事实真相,从Unix / Linux的很好的参考。你可以找到一些有用的事实真相是在某些情况下,但你将永远appreciate清晰的代码!这不是你读剧本的片段?该文从上下文,第一选择是更容易阅读和理解。
1 | if [[ -d $newDir && -n $(echo $newDir | grep"^${webRootParent}") && -n $(echo $newDir | grep '/$') ]] then ... |
或
1 | if [ -d"$newDir" -a -n $(echo"$newDir" | grep"^${webRootParent}") -a -n $(echo"$newDir" | grep '/$') ] then ... |