1,实现条件判断有三种方法:
test + expression
[ expression ] expression 两边必须是空格,否则出现语法错误
[[ expression ]]
想实现里面的expression则需要经过测试--》分别是--》
条件测试
整数测试 :
-lt(less than) 例如:[ $A -lt $B] 小于
-gt(great than) 大于
-le(less equal) 小于等于
-ge(great than) 大于等于
-eq(equal) 等于
-ne(not equal) 不等于
写一个小脚本如下所示:(此脚本用来从键盘读入两个变量 $1 $2,然后比较两个值的大小)
#!/bin/bash
#written by jobs
#date : 07 - 23
[ $1 -lt $2 ] && echo "the min is $1" || echo "the max is $2"
字符串测试:
==
<
>
-z 示判断字符串是否为空,为空则为真,不空则为假
-n 刚好跟-z相反 ……
文件测试:
-e 判断一个文件是否存在
-f 判断一个文件是否为普通文件
-d …… 是否为目录
-h/-l 是否为链接文件
-r 是否可读
-w 是否可写
-s p判断是否存在并且为空
-x 判断是否可执行
-o 判断文件的执行者是否为所属主
例如:[ -x mytest12.sh ] && sh mytest12.sh
组合条件测试:
-a [-x /etc/passwd -a -w /etc/passwd] 同时满足r w
-o [-x /etc/passwd -o -w /etc/passwd] 满足其一即可
-not
练习如下:如果输入是Q或q ,则显示quiting ...
否则显示 Are you crazy?
#!/bin/bash
#written by jobs
#date 07 - 23
if [ $1 = "Q" -o $1 = "q" ];then
echo "quiting..."
else
echo "Are you crazy?"
fi
~
2,种执行方式:顺序 选择 循环
选择执行: if 和 case
if的格式为:
if CONDITION ; then
statement
....
fi (单分支语句)
if CONDITION ; then
statement
....
else
....
fi (双分支语句)
if CONDITION ; then
statement
...
elif CONDITION; then
statement
...
elif CONDITION ;then
...
else statement
...
fi (多分支语句)
那么我们用if判断语句就可以将我们上面的脚本实例改写为:
#!/bin/bash
#written by jobs
#date : 07 - 23
if [ $1 -lt $2 ] ; then
echo "the min is $1"
else
echo "the max is $2"
fi
3,几种特殊的数学运算符
+= 自加然后付值给自己 sum=$[$sum+1]
-= sum=$[$sum-1]
*=
/=
++
--
写几个脚本的实例练习一下:
第一个--》判断一个文件是否存在,存在则显示……不存在则显示……
#!/bin/bash
#written by jobs
#date 07 - 23
if [ -e $1 ];then
echo "$1 is exist!"
else
echo "$1 is not exist!"
fi
第二个:写一个脚本 ,当输入一个路径的时候,能判断其是一般文件还是链接文件还是目录……
#!/bin/bash
#written by jobs
#date 07-23
if [ -d $1 ];then
echo "$1 is a directory"
elif [ -f $1 ]; then
echo "$1 is a commen file"
elif [ -l $1 ]; then
echo "$1 is a link"
else
echo "$1 is a ghost!!!"
fi
第三题: 求100之内偶数之和
#!/bin/bash
#written by jobs
#date : 07 -23
let sum=0
for I in {1..100};do
if [ $[I%2] -eq 0 ];then
sum=$[$sum+I]
else
echo "I am $I"
fi
done
echo "the sum is $sum!"
~
while 循环书写格式:
while CONDITION : do
statement
CONDITION
done
举例如下:输入Q或者q表示成功 然后退出,否则 显示give the Q|q for quiting ,others for donkey!
#!/bin/bash
#written by jobs
#date : 07 - 23
echo "give the Q|q for quiting,others for donkey!"
read A
AA=`echo $A | tr 'a-z' 'A-Z'`
while [ "$AA" != 'Q' ];do
echo "give the Q|q for quiting,others for donkey!"
read A
AA=`echo $A | tr 'a-z' 'A-Z'`
done
~
终于完成了 ,现在是七月二十四号早上两点,又熬夜了……没人逼我,说不清是神马东西使我变的如此努力,或许真的是长大了或许是该毕业了……不过这都无所谓,反正我现在知道,为了目标而努力的人的生活是充实的!
阅读(1968) | 评论(0) | 转发(0) |