lgxqf  
第十三章 学习Shell脚
从学习export命令理解到的Shell环境和变量生存期
http://www.chinaunix.net/jh/4/322149.html

数值运算方法    

    Bash shell 只支持整型,不支持浮点。 将变量声明为整型有两种方法:
        declare -i num=$a*$b
        num=$(($a*$b))   即: var=$((运算内容))

test 用于判断条件
          判断符号[ ] 等价于 test [ "$HOME" != "$PATH" ] 等价于 test "$HOME != "$PATH"
          判断符号中的所有组件都需要用空格分隔,且其中的变量一定要用双引号括起来。
          0为真 1为假

Shell脚本的默认变量

        $0代表文件名 $1代表第一个参数    $#代表参数个数  $? 代表上个程序执行后的返回值

条件判断
        if   条件1   ; then
        elif 条件2   ; then
        else
        fi


    条件为shell命令

    如 if [ "1" ==  "1" ]; then

        fi

    等价于

    if test "1" == "1" ; then

    fi

    再如

    if echo "AAAA" | grep "A" ; then

    fi

 下面的程序用于判断用户输入的日期是否是我的生日

        read -p "Please input birthday: (ex 820217) " birthday

        birthday=`echo $birthday | grep "[0-9]\{6,\}"`

        
if    [ -z "$birthday" ]; then
            
echo -e "Please input correct birthday: \n"
        elif  [ "$birthday" == "820201" ]; then
            
echo -e "It is my birthday \n"
        
else
            
echo -e "The birthday you input is $birthday \n"       
        fi

 

    将信息重定向到标准错误:  echo kk >&2 注:中间没有空格。

case  用法

  case 值 in
      模式1) 命令 
              ;;
      模式2) 命令 
              ;;
      *) 命令
      ;;
  esac
      模式中可以用 | 符号来判断多个条件, 还可以用匹配符号?,*,[]等。
       *)代表当不满足其它模式时的条件。

 

#!/bin/bash
read -"Please input name:" NAME

case 
$NAME in

m
|M)  echo "mayi"                 # |的用法
        ;;
m
*t)  echo "myt"                        # *匹配符
        ;;
*)    echo "not found"
        ;;

esac

until:先执行循环体内的内容,再测试条件,也就是说循环至少会执行一次

    until 条件
            命令
    done
#!/bin/bash

ISROOT
=`who | grep lgxqf`

until [ 
"$ISROOT" ]
do
        
echo finding
        sleep 
2
done

echo lgxqf  logged in

 

while 条件
do
    命令
done

#!/bin/bash
#Read data from file
if [ -z "$1" ] || [ ! -f "$1" ]; then
        
echo Please input  valid file name.
        
exit 1
fi

while read CONTENT
do
        
echo $CONTENT
done 
< "$1"


posted on 2009-06-22 23:16  Justin_Ma  阅读(300)  评论(0)    收藏  举报