[和[[在Bash?之间]有什么区别?

[和[[在Bash?之间]有什么区别?

我查看了bash手册页,并[[说它使用条件表达式。然后我查看了Conditional Expressions部分,它列出了与test(和[)相同的运算符。

所以我想知道,Bash [[[Bash 之间的区别是什么?


HUX布斯
浏览 504回答 3
3回答

九州编程

[与test内置相同,并且像test二进制(man test)一样工作与[许多类UNIX环境中的所有其他基于sh的shell一样仅支持单一条件。使用bash &&和||运算符进行的多次测试必须在单独的括号中。本身不支持'not'运算符。要反转条件,请使用!第一个括号外部来使用shell的工具来反转命令返回值。==并且!=是文字字符串比较[[ 是一个bash是特定于bash的,尽管其他shell可能已经实现了类似的构造。不要指望它在老式的UNIX sh中。==并!=应用bash模式匹配规则,请参阅“模式匹配”man bash有一个=~正则表达式匹配运算符允许使用括号和括号内的!,&&和||逻辑运算符来组合子表达式除此之外,它们非常相似 - 大多数单独的测试在它们之间的工作方式相同,当您需要将不同的测试与逻辑AND / OR / NOT操作组合时,事情才会变得有趣。

冉冉说

最重要的区别在于代码的清晰度。是的,是的,上面说的是真的,但是[[]]使你的代码符合你在高级语言中所期望的,特别是关于AND(&&),OR(||)和NOT(!)运营商。因此,当您在系统和语言之间移动时,您将能够更快地解释脚本,从而使您的生活更轻松。从一个好的UNIX / Linux参考中获取细节。您可能会发现某些细节在某些情况下有用,但您将始终欣赏清晰的代码!您更喜欢阅读哪个脚本片段?即使脱离背景,第一选择也更容易阅读和理解。if [[ -d $newDir && -n $(echo $newDir | grep "^${webRootParent}") && -n $(echo $newDir | grep '/$') ]]; then ...要么if [ -d "$newDir" -a -n "$(echo "$newDir" | grep "^${webRootParent}")" -a -n "$(echo "$newDir" | grep '/$')" ]; then ...
打开App,查看更多内容
随时随地看视频慕课网APP