Shell编程笔记--条件判断

来源:互联网 发布:python大数据分析实例 编辑:程序博客网 时间:2024/05/16 15:26
条件判断

一、test:
方式1:
test -d feifei.txt  测试feifei.txt是否为目录


方式2:[-d feifei.txt]
echo $? 输出0为是,1为否

test -f feifei.txt 是否为文件
-r、-w、-x 读、写、执行
-s 是否非空


1.1:与或非(a,o,!)
[ -r feifei.txt -a -w feifei.txt ] echo $?判断feifei.txt是否可读写[ -r feifei.txt -o -w feifei.txt ] echo $?判断feifei.txt是否写或可写[ ! -r feifei.txt ] echo $?判断feifei.txt不是可读的




1.2:测试字符串、数字
设置值:name=" feifei "
[ -z name ] 空串
[ -n name ] 非空串
[ name = "feifei" ] 是否相等
[ name != "feifei" ] 不相等


     测试数值:
-eq、 -ne 
-gt、 -lt
-le、 -ge


二、expr 
一般用于整数值,也可用于字符串
加减乘除:+ - \*  /
expr 10 + 10 (20)
expr 10 - 10 (0)
expr 10 \* 10 (100)
expr 10 / 10 (1)

i++自增:
i=0
i='expr $i + 1'


-------------------------------------
三、if then else / case的判断
3.1 if的用法
格式:
if [条件1]then 命令1elif 条件2then 命令2else 命令3fi


-------------------------------
例子:新建一个feifei.sh
#!/bin/shvalue=$1echo $valueif [ $value -eq 10 ]        then echo $valueelif [ $value -eq 20 ]        then echo $valueelse        echo "no value!"fi

执行: ./feifei.sh 10


2.检查在feifei.txt是否找到 字符串 feifei

if grep 'feifei' feifei.txt > /dev/null 2>&1then        echo "find it"else        echo "not find"fi


----------输入一串名称,判断是否包含 feifei---------------------------------
echo -n "Enter a list of names:"read listif echo $list | grep "feifei" > /dev/null 2>&1then        echo "find it"else        echo "not find"fi




3.2 case的用法
格式:
case 值 in         模式1)命令1;; 模式2)命令2;; esac


--------------------------------------------------
#!/bin/shecho "Enter a num"read numcase $num in 1) echo "select 1"        ;; 2) echo "select 2"        ;; 3|4) echo "select 3|4"        ;; 5|6);; *) echo "'basename $0'"        ;;esac

输入 1、2 各自输出 1、2
输入 3、4 输出 3|4
输入 5、6 无输出
其他输入 输出 文件名

------------------------------------------------------------

" > /dev/null 2>&1"的解释:
/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误

& 表示等同于的意思,2>&1,表示2的输出重定向等同于1






0 0