下面是 “Shell中的单中括号和双中括号的用法详解”的完整攻略。
单中括号和双中括号的基本区别
单中括号 [ ]
和双中括号 [[ ]]
在 Shell 中都是用于条件测试的,但两者有一些差别。下表列出了两者的差别:
特性 | 单中括号 [ ] |
双中括号 [[ ]] |
---|---|---|
逻辑判断 | 使用标准的条件测试;无法进行高级判断;不支持&&或||运算符。 | 拥有更多种的内部逻辑表达式;支持&&和||运算符。 |
字符串比较 | 使用= 进行比较 |
支持= 和== 进行比较 |
参数扩展 | 如果结果为“true”,将会扩展参数 | 无需扩展参数,即可进行测试。 |
单中括号 [ ]
的用法
逻辑测试
使用单中括号进行逻辑判断的语法如下:
[ condition1 ] && [ condition2 ]
注:条件之间使用空格隔开
示例1:
if [ -f "/root/file.txt" ] && [ -r "/root/file.txt" ]
then
echo "The file exists and is readable"
fi
上述脚本将会判断文件/root/file.txt是否存在且可读。如果条件满足,则输出“The file exists and is readable”。
字符串测试
使用单中括号进行字符串比较的语法如下:
[ str1 = str2 ]
示例2:
if [ "$str1" = "$str2" ]
then
echo "The strings are identical"
fi
上述脚本将会比较变量$str1和$str2中的字符串是否完全相同。如果条件满足,则输出“The strings are identical”。
双中括号 [[ ]]
的用法
逻辑测试
使用双中括号进行逻辑测试的语法如下:
[[ condition1 && condition2 ]]
注:条件之间不需使用空格隔开
示例1:
if [[ -f "/root/file.txt" && -r "/root/file.txt" ]]
then
echo "The file exists and is readable"
fi
上述脚本将会判断文件/root/file.txt是否存在且可读。如果条件满足,则输出“The file exists and is readable”。
字符串测试
使用双中括号进行字符串测试的语法如下:
[[ str1 == str2 ]]
示例2:
if [[ "$str1" == "$str2" ]]
then
echo "The strings are identical"
fi
上述脚本将会比较变量$str1和$str2中的字符串是否完全相同。如果条件满足,则输出“The strings are identical”。
结论
总之,单中括号和双中括号都是用于条件测试的基本工具。但两者的功能有所不同,您应该根据您的具体需要选择使用。
希望这份文档对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Shell中的单中括号和双中括号的用法详解 - Python技术站