来源:https://blog.csdn.net/Powerful_Fyshell
格式1:if 条件 ; then 语句; fibash
#!/bin/bash read -p "input a number:" n if [ $n -gt 5 ] then echo "1" fi
格式2:if 条件; then 语句; else 语句; fisocket
#!/bin/bash read -p "input a number:" n if [ $n -gt 5 ] then echo "1" else echo "2" fi
格式3:if …; then … ;elif …; then …; else …; fi.net
#!/bin/bash read -p "input a number:" n if [ $n -gt 90 ] then echo "A" elif [ $n -gt 70 ] then echo "B" else echo "C" fi
格式4:if 中嵌套 ifcode
#!/bin/bash read -p "input a number:" n if [ $n -gt 70 ] then echo "OK" if [ $n -gt 90 ] then echo "A" elif [ $n -gt 80 ] then echo "B" else echo "C" fi else echo "???" fi
补充: -gt 大于(>) -lt 小于 (<) -ge 大于等于 (>=) -le 小于等于 (<=) -eq 等于 (==) -ne 不等于 (!=)对象
可使用 && || 结合多个条件blog
大于5而且小于10:get
if [ $a -gt 5 ] && [ $a -lt 10 ]; then
第二种写法:input
if [ $a -gt 5 -a $a -lt 10 ]; then
#-a表示:andit
大于5或小于3:
if [ $b -gt 5 ] || [ $b -lt 3 ]; then
第二种写法:
if [ $b -gt 5 -o $b -lt 3 ]; then
#-o表示or
[ -f file ] 判断是不是普通文件,且存在 [ -d file ] 判断是不是目录,且存在 [ -e file ] 判断文件或目录是否存在 [ -r file ] 判断文件是否可读 [ -w file ] 判断文件是否可写 [ -x file ] 判断文件是否可执行
补充: 1.若是判断对象为socket等特殊文件,可使用-e判断是否存在
2.root用户对文件的读写比较特殊,即便一个文件没有给root用户读或者写的权限,root用户照样能够读或者写(x:执行权限除外)
3.取反使用感叹号:
if [ ! -f filename ]
判断变量为空时:
if [ -z "$a" ]; then ...
判断变量不为空时:
if [ -n "$a" ]; then ...
判断命令成功时:
if ls /tmp/test.sh; then ...
#判断文件是否存在的用法,当ls命令执行成功时,要怎样...
将产生的信息重定向到/dev/null:
if ls /tmp/test.sh &> /dev/null; then ...
#无论ls命令执行是否成功,都将输出的信息流写入到/dev/null,不打印
判断文件是否包含关键字:
if grep -q '123' /tmp/test.sh; then ...
#当文件包含关键字时,要怎样...,-q:包含关键字时,不输出匹配到的信息
if [ $a -gt 5 ]的另外一种写法:
if (($a>5)); then ...
#[ ] 中不能使用<,>,==,!=,>=,<=这样的符号,但双括号中能够
case 变量名 in value1) command ;; value2) command ;; *) commond ;; esac 在case中,能够在条件中使用|,表示或的意思: 2|3) command ;;
示例:
#!/bin/bash read -p "input a number: " n #判断输入内容是否为空 if [ -z "$n" ] then echo "Please input a number." exit 1 fi #判断输入内容是否含有非数字 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 t=1 elif [ $n -ge 60 ] && [ $n -lt 80 ] then t=2 elif [ $n -ge 80 ] && [ $n -lt 90 ] then t=3 elif [ $n -ge 90 ] && [ $n -le 100 ] then t=4 else t=0 fi case $t in 1) echo "D" ;; 2) echo "C" ;; 3) echo "B" ;; 4) echo "A" ;; *) echo "The number range must be 0-100." ;; esac