(^o^)/~完美 发表于 2018-8-22 12:38:43

shell学习笔记(四)shell控制流结构

  shell学习笔记(四)shell控制流结构目录:
  =======================================================
  条件语句
  if语法结构
  循环语句
  for语法结构
  1.for … in 语句
  2.for((赋值;条件;运算语句))
  while语法结构
  until语法结构
  break和continue控制
  选择语句
  case语法结构
  ========================================================
条件语句if语法结构 if 条件1   如果条件1为真then        那么action command1      执行命令1elif 条件    如果条件1不成立then      那么action command 2      执行命令2else        如果条件1与条件2都不成立action command 3   执行命令3fi          完成--------------------------------------------------------------eg: # cat if.sh #!/bin/sh scores=85;if [ $scores -gt 90 ]; then   #[ ]中的值必须是[空格expression空格]    echo "very good!";elif [ $scores -gt 80 ]; then    echo "good!";elif [ $scores -gt 60 ]; then    echo "pass!";else    echo "no pass!";fi;   # chmod 755 if.sh # ./if.shgood!-------------------------------------------------------------- # cat if1.sh #!/bin/bashecho -n "Enter you name:"read NAMEif [ -z $NAME ] || [ "$NAME" = "" ];thenecho "You don't enter a name"elif [ "$NAME" = root ];thenecho "hello root"elseecho "hello $NAME"fi # ./if1.sh   输入为root则打印echo hello rootEnter you name:roothello root # ./if1.sh输入为任意字符未匹配1 2 条件则echo hello $NAMEEnter you name:vionghello viong # ./if1.sh   输入为空字符或者空格则打印echo You don't enter a nameEnter you name:You don't enter a name 简单结构: if 条件1      如果条件1为真then             那么action command 1 执行命令1fi                完成eg: # if [ 10 -lt 21 ];then echo "YES";fi;YES 条件测试有:[[]],[],test 这几种,注意:if与[ ]用空格分开,[ ]与变量之间用空格分开            [ ]内是整数时不能使用条件运算符shell命令,可以按照分号分割,也可以按照换行符分割。如果想一行写入多个命令,可以通过“';”分割 循环语句 for语法结构 1.for … in 语句for 变量 in 列表doaction command1action command2done 当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值只要用空格字符分割,每次for…in 读取时候,就会按顺序将读到值,给前面的变量命令可为任何有效的shell命令和语句变量名为任何单词in列表用法是可选,如果不用它,for循环使用命令行的位置参数in列表可以包含替换,字符串和文件名 # cat for.sh#!/bin/bash#forfor abc in {1..5}doecho $abcdone# ./for.sh 12345这脚本实现相当于seq命令# seq 512345------------------------------------------------------# cat for.sh#!/bin/bash#forfor abc in “lin hong viong” 注意:如果把双引号去掉就变成三个字符换行打印出来doecho $abcdone# ./for.shlin hong viong 2.for((赋值;条件;运算语句)) for((赋值;条件;运算语句))doaction commanddone;eg: # cat for2.sh #!/bin/bashfor ((i=1;i
页: [1]
查看完整版本: shell学习笔记(四)shell控制流结构