shell编程_test命令
bash shell提供了在if-then语句中声明test命令的方法:
if [ condition ]
then
commands
fi
方括号中定义了test命令中用到的条件。
注意,必须在方括号内两侧加括号,否则会报错。
test命令可以判断三类条件,数值比较、字符串比较、文件比较。
数值比较
数值进行比较的参数是两个字母。
| n1 -eq n2 | 检查n1与n2是否相等 |
| n1 -ge n2 | 检查n1是否大于或等于n2 |
| n1 -gt n2 | 检查n1是否大于n2 |
| n1 -le n2 | 检查n1是否小于或等于n2 |
| n1 -lt n2 | 检查n1是否小于n2 |
| n1 -ne n2 | 检查n1是否不等于n2 |
#! /bin/bash
val1=10
val2=11
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
fi
if [ $val1 -eq $val2 ]
then
echo "The values are equal"
else
echo "The values are different"
fi
字符串比较
| str1 = str2 | 检查str1是否和str2相等 |
| str1 != str2 | 检查str1是否和str2不相等 |
| str1 < str2 | 检查str1是否比str2小 |
| str1 > str2 | 检查str1是否比str2大 |
| -n str1 | 检查str1的长度是否非0 |
| -z str1 | 检查str1的长度是否为0 |
文件比较
| -d file | 检查file是否存在并是一个目录 |
| -e file | 检测file是否存在 |
| -f file | 检测file是否存在并是一个文件 |
| -r file | 检测file是否存在并可读 |
| -s file | 检测file是否存在并非空 |
| -w file | 检测file是否存在并可写 |
| -x file | 检测file是否存在并可执行 |
| -O file | 检测file是否存在并属当前用户所有 |
| -G file | 检测file是否存在并默认组与当前用户相同 |
| file1 -nt file2 | 检查file1是否比fiel2新 |
| fileq -ot file2 | 检查file1是否比file2旧 |
-f举例,~/.bash_profile文件中使用-f
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
-d检测目录是否存在案例:
#! /bin/bash
#如果检测的目录存在,就进入到该目录,并显示所有内容 if [ -d $HOME ] then echo "Your HOME directory exists" cd $HOME ls -a else echo "There is a problem with your Home directory" fi
复合条件测试
常见命令行参数符号
$# 参数的个数,不包括命令本身
-o 逻辑或 [ EXPR1 -o EXPR2]
if [ $# -lt 2 -o $# -gt 3 ] ;then echo "命令行参数个数错误" fi
posted on 2021-08-19 21:06 XiaoXiaoli 阅读(78) 评论(0) 收藏 举报
浙公网安备 33010602011771号