shell中的分支

来源:互联网 发布:mysql导出所有数据库 编辑:程序博客网 时间:2024/06/04 00:29

if语句

  • 语法1
if 条件then 命令(集合)fi

这里的条件就是使用test语句或者中括号语句(前一篇文章已经总结)
注意if语句必须以fi终止

练习:

#if testif [ "13" -lt "12" ]  # "13" 前一个空格,“13”后也有一个空格。then        echo "yes 13 is less then 12"else        echo "NO"fi
  • 语法2
if 条件1then      命令1elif 条件2then      命令2else     命令3fi
#!/bin/bash#if test#this is a comment lineecho "Enter your filename:"read myfileif [ -e $myfile ]then   if [ -s $myfile ];then      echo "$myfile exist and size greater than zero"   else      echo "$myfile exist but size is zero"   fielse    echo "file no exist"fi

case多选择语句

case多选择语句格式:

case 变量/表达式 in模式1)    命令1    ;;模式2)    命令2    ;;esac
  • case取值后面必须为单词in;
  • 每一模式必须以右括号结束。
  • 取值可以为变量或常数。
  • 匹配发现取值符合某一模式后,其后的所有命令开始执行,直到;;
  • 模式匹配*表示任意字符; ?表示任意单字符; [..](注意:只有两个点)表示类或范围中任意字符
#!/bin/bash#case selectecho -n "enter a number from 1 to 3:"read numcase $num in1)        echo "you select 1"        ;;2)        echo "you select 2"        ;;3)        echo "you select 3"        ;;y|Y)        echo “you select y”        ;;*)        echo "`basename $0`:this is not between 1 and 3">&2        exit;        ;;esac
  • 所有的模式具有优先级,按照出现的顺序优先匹配
  • 模式可以写成表达式表示一个范围如y|Y
  • 不能像C语言switch-case一样,将执行相同操作的多个模式写在一起,如果多个模式执行同一个操作,用|把他们组合起来,表示其中一个被匹配上执行相应的分支操作。
0 0
原创粉丝点击