shell脚本------------编程条件语句(if、case)

条件测试操作

文件测试

  • [ 操作符 文件或目录 ]

常用的测试操作符

  • -d:测试是否为目录(Directory)
  • -e:测试目录或文件是否存在(Exist)
  • f:测试是否为文件(File)
  • -r:测试当前用户是否有权限读取(Read)
  • -w:测试当前用户是否有权限写入(Write)
  • -x:测试当前用户是否有权限执行(eXcute)

注释:这里的当前用户是指执行命令的用户。

示例:

[ -d /media/cdrom ] && echo $?|| echo $?			###当等式成立输出“0”否则输出“1”

注释:

  • “0“:等式成立
  • “1“:等式不成立
  • “&&“:逻辑与,”而且“的意思

整数值比较

  • [整数1 操作符 整数2 ]

常用的测试操作符

  • -eq:等于(Equal)
  • -ne:不等于(Not Equal)
  • -gt:大于(Greater Than)
  • -lt:小于(Lesser Than)
  • -le:小于或等于(Lesser or Equal)
  • -ge:大于或等于(Greater or Equal)

字符串比较

  • 格式1:[ 字符串1 = 字符串2 ]
    [ 字符串1!=字符串2 ]
  • 格式2:[ -z 字符串 ]

常用的测试操作符

  • =:字符串内容相同
  • !=:字符串内容不同,!号表示相反的意思
  • -z:字符串内容为空

逻辑测试

  • 格式1:[ 表达式1 ] 操作符 [ 表达式2 ] …
  • 格式2:命令1 操作符 命令2 …

常用的测试操作符

  • -a或&&:逻辑与,“而且”的意思
  • -o或||:逻辑或,“或者”的意思
  • !:逻辑否

if语句的结构

单分支结构

if 条件测试操作
	then 命令序列
fi

示例:

if [ ! -d $MOUNT_DIR ]
then
	mkdir -p $MOUNT_DIR
fi

shell脚本------------编程条件语句(if、case)_第1张图片

双分支结构

if 条件测试操作
	then 命令序列1
	else 命令序列2
fi

示例:

ping -c 3 -i 0.2 -W 3 $1 &>/dev/null
if [ $? -eq 0 ]
then
	echo "Host $1 is up."
else
	echo "Host $1 is down."
fi

shell脚本------------编程条件语句(if、case)_第2张图片

多分支结构

if 条件测试操作1
	then 命令序列1
elif 条件测试操作2
	then命令序列2
else
	命令序列3
fi

示例

read -p "请输入你的分数(0-100):" A
if [ $A -ge 85 ] && [ $A -le 100 ]
then
   echo "$A 分,优秀,继续保持!!"
elif [ $A -ge 70 ] && [ $A -le 84 ]
then
   echo "$A 分,合格,仍需加油!“
elif [ $A -ge 0 ] && [ $A -le 69 ]
then
   echo "$A 分,不合格,需要加强啦!"
else
   echo "$A 分,再乱输,嘶啦嘶啦滴!!!"
fi

shell脚本------------编程条件语句(if、case)_第3张图片

case语句结构

case多分支结构

case 变量值 in
模式1)
	命令序列1
	;;
模式2)
	命令序列2
	;;
	......
*)
	默认命令序列
esac

示例:

read -p ”请输入一个字符,并按Enter键确认:“KEY
case ”$KEY“ in
[a-z]|[A-Z])
	echo "你输入的是字母"
	;;
[0-9])
	echo "你输入的是数字"
	;;
*)
	echo "你输入的是空格、功能键或其他控制字符"
esac

shell脚本------------编程条件语句(if、case)_第4张图片

总结:

条件测试的语法

  • 文件测试、整数值比较、字符串比较、逻辑测试

if条件语句的语法

  • 单分支、双分支、多分支

case多分支语句的语法

你可能感兴趣的:(shell脚本,字符串,shell)