格式1:test ?条件表达式
格式2:[ ?条件表达式 ?]
注意? [ ]空格,否则会失败
测试 是否成功使用 $? ?返回值
[ 操作符 文件或目录 ]
help test
操作符:
-d:测试是否为目录(Directory)
-a:测试目录或文件是否存在(Exist) ??
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-L: 测试是否为软连接文件
①-e:测试目录或文件是否存在(Exist)
②-f:测试是否为文件(File)?
?③-x:测试当前用户是否有权限执行(eXcute)
?
-eq:第一个数等于(Equal)第二个数
-ne:第一个数不等于(Not Equal)第二个数
-gt:第一个数大于(Greater Than)第二个数
-lt:第一个数小于(Lesser Than)第二个数
-le:第一个数小于或等于(Lesser or Equal)第二个数
-ge:第一个数大于或等于(Greater or Equal)第二个数
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在
常见条件
-a或&&:逻辑与,“而且”的意思全真才为真
-o或||:逻辑或,“或者”的意思一真即为真
!:逻辑否
操作符:
&&或-a? 表示且的意思,前面表达式或命令1为真才会执行操作符后面的表达式2或命令2。一假则为假。
||或-o? ?表示或的意思,前面表达式1或命令1为真则整个表达式为真,前面表达式为假或命令为假才会执行后面的表达式2或命令2?。一真则为真。
结构:
if 判断条件;then ?
条件为真的分支代码
fi
结构:
if 判断条件;then ?
条件为真的分支代码
else
?条件为假的分支代码
fi
if 判断条件1
then
?条件1为真的分支代码
elif 判断条件2
then
?条件2为真的分支代码
elif 判断条件3;
then
?条件3为真的分支代码
...
else
?以上条件都为假的分支代码 ?托底
fi
case支持glob风格的通配符:
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符
| ? 或者,如: a|b
格式:
read -p ? ?...... ? ? ?i
case $i in
PAT1)
?分支1
?;;
PAT2)
?分支2
?;;
...
*)
?默认分支
?;;
esac
#!/bin/bash
read -p "请在此处输入:" key
case $key in
[0-9])
echo "你输入的是 数字"
;;
[a-z]|[A-Z])
echo "你输入的是 字母"
;;
*)
echo "输入有误"
bash $0
esac
#!/bin/bash
#积分分类
read -p "请输入积分(0-100):" JF
if [ $JF -ge 90 ];then
echo '优'
elif [ $JF -lt 90 ];then
echo '差'
fi
#!/bin/bash
for i in {1..254}
do
{
ping -c2 -w2 192.168.91.$i &>/dev/null
if [ $? -eq 0 ]
then
echo host $i is online
echo "$i" >> host.txt
else
echo "host $i is offline"
fi
}&
done
wait