在写Linux脚本的时候,经常会用到判断,这篇主要讲if的具体使用。
if用法:
if [ ] ;then
command
elif [ ] ;then
command
else
command
fi
Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串
判断参数见下表:
类型 | 运算符 | 描述 | 示例 |
文件比较运算符 | -e filename | 如果 filename 存在,则为真 | [ -e /var/log/syslog ] |
-d filename | 如果 filename 为目录,则为真 | [ -d /tmp/mydir ] | |
-f filename | 如果 filename 为常规文件,则为真 | [ -f /usr/bin/grep ] | |
-L filename | 如果 filename 为符号链接,则为真 | [ -L /usr/bin/grep ] | |
-r filename | 如果 filename 可读,则为真 | [ -r /var/log/syslog ] | |
-w filename | 如果 filename 可写,则为真 | [ -w /var/mytmp.txt ] | |
-x filename | 如果 filename 可执行,则为真 | [ -L /usr/bin/grep ] | |
字符串比较运算符 | -z string | 如果 string 长度为零,则为真 | [ -z $myvar ] |
-n string | 如果 string 长度非零,则为真 | [ -n $myvar ] | |
string1 = string2 | 如果 string1 与 string2 相同,则为真 | [ $myvar = one two three ] | |
string1 != string2 | 如果 string1 与 string2 不同,则为真 | [ $myvar != one two three ] | |
算术比较运算符 | num1 -eq num2 | 等于 | [ 3 -eq $mynum ] |
num1 -ne num2 | 不等于 | [ 3 -ne $mynum ] | |
num1 -lt num2 | 小于 | [ 3 -lt $mynum ] | |
num1 -le num2 | 小于或等于 | [ 3 -le $mynum ] | |
num1 -gt num2 | 大于 | [ 3 -gt $mynum ] | |
num1 -ge num2 | 大于或等于 | [ 3 -ge $mynum ] |
脚本栗子1:
#!/bin/bash if [ -d /home/kumufengchun/trash ];then echo 'ok' else echo 'no' fi if [ -e /home/kunufengchun/test.sh ] && [ -f /home/kumufengchun/test.sh ];then echo 'exist' else echo 'noexist' fi;
注意:在判断时,if后边的中括号前后一定要有空格,否则会报错,应写成 if [ -e /home/kunufengchun/test.sh ],而不是 if [-e /home/kunufengchun/test.sh]
脚本栗子2:
#!/bin/bash # This script prints a message about your weight if you give it your # weight in kilos and hight in centimeters. if [ ! $# == 2 ]; then echo "Usage: $0 weight_in_kilos length_in_centimeters" exit fi weight="$1" height="$2" idealweight=[height - 110] if [ weight−leidealweight ] ; then echo "You should eat a bit more fat." else echo "You should eat a bit more fruit." fi # weight.sh 70 150 You should eat a bit more fruit. # weight.sh 70 150 33 Usage: ./weight.sh weight_in_kilos length_in_centimeters
位置参数 1,2,..., N,#代表了命令行的参数数量, $0代表了脚本的名字,
第一个参数代表1,第二个参数代表2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。
# bash -x tijian.sh 60 170
+ weight=60
+ height=170
+ idealweight=60
+ '[' 60 -le 60 ']'
+ echo 'You should eat a bit more fat.'
You should eat a bit more fat.
其中-x用来检查脚本的执行情况。