if语句:shell
if 条件;then 语句;fibash
if 条件;then 语句;else 语句;fispa
if 条件;then 语句;elif 条件;then 语句;else 语句;ficode
逻辑判断表达式:字符串
if [ $a -gt $b ];if[ $b eq 10 ];...; #注意[]中与表达式间有空格;可用&&和||组合条件input
大于 -gtit
小于 -ltclass
等于 -eq后台
不等 -ne变量
大于等于 -ge
小于等于 -le
[ -f file ] 判断是不是普通文件,且存在
[ -d file ] 判断是不是目录,且存在
[ -e file ] 判断文件或目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行
&&:而且
f=/tmp/1.txt
[ -f $f ] && rm -f $f #前一条命令执行成功才会继续执行以后的命令,效果等同于如下命令:
if [ -f $f ]
then
rm -rf $f
fi
||:或者
f=/tmp/1.txt
if [ -f $f ] || touch $f fi #前面命令不成功时,才执行后面的命令效果等同于如下命令:
if [ -f $f ]
then
touch $f
fi
if [ -z "$a" ] 表示当变量a的值为空时继续;当判断文件时,可不带 双引号
if [ -n "$a" ] 表示当变量a的值不为空继续;当判断文件时,可不带 双引号
if grep -q '123' 1.txt; then 表示若是1.txt中含有'123'的行时会怎么样 ;-q只后台筛选,不打印结果
if [ ! -e file ]; then 表示文件不存在时会怎么样
if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…
[ ] 中不能使用<,>,==,!=,>=,<=这样的符号
格式: #注意:$xxx 为变量;当变量值等于value1时,执行command1;当等于value2或value3时,执行command2;当其余时,执行command3
case $xxx in
value1)
command1
;;
value2|value3)
command2
;;
*)
command3
;;
esac
脚本案例:
需求:执行脚本,让用户输入一个数字,而后用脚本去判断这个数字的范围
#!/bin/bash #read 让用户所输入的字符串;-p 给出提示信息,信息用双引号区分,赋值给变量“n” read -p "Please input a number: " n #判断是否输入有数值,空直接结束整个文本 if [ -z "$n" ] then echo "Please input a number." exit 1 fi #n1将输入的字符串所包含的数字清空,并检查变量是否为空,若是不为空,就证实输入有其余的字符,告知用户,请输入一个数字 #肯定,n变量是否为数字 n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "Please input a number." exit 1 fi if [ $n -lt 60 ] && [ $n -ge 0 ] then tag=1 elif [ $n -ge 60 ] && [ $n -lt 80 ] then tag=2 elif [ $n -ge 80 ] && [ $n -lt 90 ] then tag=3 elif [ $n -ge 90 ] && [ $n -le 100 ] then tag=4 else tag=0 fi case $tag in 1) echo "not ok" ;; 2) echo "ok" ;; 3) echo "okok" ;; 4) echo "okokok" ;; *) echo "The number range is 0-100." ;; esac