Bash脚本if语句

Bash脚本if语句,bash,unix,Bash,Unix,在Bash脚本中,以下代码段之间有什么区别 1) 使用单括号: if [ "$1" = VALUE ] ; then # code fi if [[ "$1" = VALUE ]] ; then # code fi 2) 使用双括号: if [ "$1" = VALUE ] ; then # code fi if [[ "$1" = VALUE ]] ; then # code fi [[]]构造是[]更通用的Bash版本。这是扩展测试命令,采用自ksh88 使用[…]测试构造而

在Bash脚本中,以下代码段之间有什么区别

1) 使用单括号:

if [ "$1" = VALUE ] ; then
 # code
fi
if [[ "$1" = VALUE ]] ; then
 # code
fi
2) 使用双括号:

if [ "$1" = VALUE ] ; then
 # code
fi
if [[ "$1" = VALUE ]] ; then
 # code
fi
[[]]构造是[]更通用的Bash版本。这是扩展测试命令,采用自ksh88

使用[…]测试构造而不是[…]可以防止脚本中出现许多逻辑错误。例如,&&,| |,运算符在[[]测试中工作,尽管在[]构造中给出了错误


在您的代码片段中,没有使用任何附加功能,因此没有任何区别。

使用
[
可以禁止对括号中的表达式进行正常的分词和路径名扩展。它还支持许多附加操作,如模式匹配
[
是bash内置的,
[[
是一个关键字。请参阅。注意:互联网上的大多数bash脚本都是垃圾(不能使用带空格的文件名,会引入隐藏的安全漏洞等),而bash比人们想象的要难掌握得多。如果你想做bash编程,你应该至少学习和。

以防需要可移植性:

对于可移植性测试,您可以通过Herelog项目获得Bourne shell,或者:


(例如,在Mac OS X上,/bin/sh不是纯粹的Bourne shell。)

这也是一个外部程序,但并不意味着它不是内置程序

which [
/usr/bin/[
在单方括号中,必须使用-lt表示“小于”别名,否则可以使用

和stdout