条件表达式

判断和分支语句

循环语句

函数

1. 条件表达式

$ test  10  -gt  5  // 算数表达式 10>5
$ echo $?   //显示上述表达式的运行结果,0
$ [ 10 -lt 5 ]  //算数表达式 10<5,方括号与10、5之间有空格
$ echo $?   //显示上述表达式的运行结果,1

2. 条件和分支语句

使用编辑器vi编辑下列shell脚本

(1) 判断输入的用户名是否为当前用户名
#!/bin/bash 
	echo -n "Enter your login name: "
	read name
	if [ "$name" = "$USER" ];   //if和[之间有空格,[和”之间也有空格
	    then  //空四格
		    echo "Hello, $name. How are you today ?"  //再空四格
	    else 
		    echo "You are not $USER, so who are you ?"
	fi  //对齐if

将上述脚本保存至test_uf.sh,运行该脚本

$ bash test_uf.sh zhangs
(2) 判断当前所处的时间
#!/bin/bash
hour=`date +%H`
  case $hour in
 0[1-9] | 1[01] )  
        echo "Good morining !!" 
        ;;
1[2-7] ) 1
        echo "Good afternoon !!"
                ;;
 * ) 
        echo "Good evening !! " 
        ;;
esac

将上述脚本保存至文件test_case.sh,运行该程序

$ bash test_case.sh //观察运行结果

3. 循环语句

(1) 计算最小值
#!/bin/bash
smallest=10000
for i in  12 5 18 58 -3 80
do
if test $i -lt $smallest
then
  smallest=$i
fi
done
echo " The smallest number is: $smallest"

将上述脚本保存至 test_for.sh,运行该脚本

$ bash test_for.sh  // 观察运行结果
(2) 计算1到100之间整数的和
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ] 
do
  sum=`expr $sum + $i`
  i=`expr $i + 1`  //有空格,看书P76

done
echo The sum is $sum

将上述脚本保存至文件test_while.sh,运行该脚本

$ bash test_while.sh

4. 函数

运用函数判断两个数的大小

#!/bin/bash
 compare()
{
  if [ "$1" -eq "$2" ]
   then
       return 0
  elif [ "$1" -gt "$2" ]
   then
     return 1
  else
     return 2
 fi
  
  }  
compare $1 $2
case $?  in
    0)
      echo "$1 = $2"
      ;;
    1)
       echo "$1 > $2"
       ;;
   2)
  echo "$1 < $2"
     ;;
esac

将上述脚本保存至文件test_fun.sh,运行该脚本

$ bash test_fun.sh 10 36 //观察运行结果,最后不要忘记输入两个整数进行比较

5. 思考题

  1. 函数内的$1,$2与函数外的$1,$2有何区别

  2. 给出本地变量的作用域