Chinaunix首页 | 论坛 | 博客
  • 博客访问: 647725
  • 博文数量: 32
  • 博客积分: 873
  • 博客等级: 准尉
  • 技术积分: 512
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 16:49
文章存档

2012年(1)

2011年(31)

分类: LINUX

2011-07-23 22:50:52

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
~

终于完成了 ,现在是七月二十四号早上两点,又熬夜了……没人逼我,说不清是神马东西使我变的如此努力,或许真的是长大了或许是该毕业了……不过这都无所谓,反正我现在知道,为了目标而努力的人的生活是充实的!


 
 
阅读(1974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~