Bash脚本if语句
在Bash脚本中,以下代码段之间有什么区别 1) 使用单括号: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 使用[…]测试构造而
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