shell编程里的测试test命令基本可以分为3种数据类型,每种都不一样。个人更倾向于理解为条件语句的写法规则,就是test加条件加判断语句。
1 数值类型
基本可以分为6个判断:-eq等于,-ne不等于,-gt大于,-lt小于,-ge大于等于,-le小于等于
实例:a=1;b=2
if test $[a] -eq $[b] #如果a等于b,那就...,-ne,-gt,,等等都可以,另外提一句,要是不是一个算式的话,可以不加方括号,$a + $b
then
echo "a=b" #缩进4个4个都行,习惯性缩进4个
else
echo "a!=b"
ps:算式有两种写法:$[a + b]和`expr $a + $b`
2 字符串
有4个判断:= ,!= , -z (长度为0)和-n(长度不为0)
实例:astr='hehehehe' ; bstr='hahahaha'
if test $astr = $bstr
then
echo "astr = bstr"
else
echo "astr !=bstr"
fi
3 文件测试
基本上有9个常用的参数,基本格式是test + 参数 +文件名,参数分别是:
-e:exists,存在这样的一个文件;
-r:readable,文件是可读的;
-w:writable,文件的可写的;
-x:文件是可执行的,
-s:存在且不为空
-d:directory,存在目录
-f:file,存在且为普通文件,
-c:文件存在而且为字符型的特殊文件 #这个地方怎么理解呢,可以和ls命令中最前面的一个字符相关联:‘-’表示文件。d则表示目录,l表示连接文件,b表示设备文件里面的可供存储的接口设备,c表示设备文件里面的串行端口设置。https://zhidao.baidu.com/question/1820545103813500748.htm
实例:
cd /etc
if test -f /etc/passwd #此处可以结合与或非逻辑语句:形如 if test -e ./notFile -o -e ./bash 表示存在./notFile 或者./bash
then
echo "yes"
else
echo "no"
fi