在Linux shell脚本编程中,关系运算符错误是常见问题之一。以下是避免这些错误的实用建议:
[ ]
vs 双括号 [[ ]]
[ ]
是传统test命令,需要严格遵循空格规则[[ ]]
是bash扩展,更灵活且功能更强# 传统方式
if [ "$a" -lt "$b" ]; then
# 现代方式
if [[ $a < $b ]]; then
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
= 等于
!= 不等于
< 小于
> 大于
-z 字符串为空
-n 字符串非空
if [$a -eq $b] # 错误
if [ $a -eq $b ] # 正确
if [ "10" < "2" ] # 按字典序比较,结果为真
if [ 10 -lt 2 ] # 数值比较,结果为假
if [ -n $var ] # 当var为空时变成 [ -n ],语法错误
if [ -n "$var" ] # 正确方式
"$var"
而不是 $var
[[ ]]
:它更安全且功能更强大bash
if (( a < b )); then
-z
和-n
检查空字符串:
bash
if [ -z "$var" ]; then
if [ -n "$var" ]; then
==
进行模式匹配(仅在[[ ]]
中有效):
bash
if [[ "$file" == *.txt ]]; then
set -x
开启调试模式bash -n script.sh
通过遵循这些准则,您可以显著减少shell脚本中的关系运算符错误。