haoman 发表于 2018-8-24 13:03:38

Shell流程控制

  防伪码:床前明月光,疑是地上霜。
  流程控制是改变程序运行顺序的指令。
  f 4.1 if语句
  格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi
  4.1.1 单分支
  if 条件表达式; then
  命令
  fi
  示例:
  #!/bin/bash
  N=10
  if [ $N -gt 5 ]; then
  echo yes
  fi
  # bash test.sh
  yes

  4.1.2 双分支
  if 条件表达式; then
  命令
  else
  命令
  fi
  示例:
  #!/bin/bash
  N=10
  if [ $N -lt 5 ]; then
  echo yes
  else
  echo no
  fi
  # bash test.sh
  no

  4.1.3 多分支
  if 条件表达式; then
  命令
  elif 条件表达式; then
  命令
  else
  命令
  fi
  示例:
  #!/bin/bash
  N=10
  if [ $N -gt 5 ]; then
  echo "gt 5"
  elif [ $N -gt 6 ]; then
  echo "gt 6"
  else
  echo no
  fi
  如果第一个条件符合就不再向下匹配。

  r 4.2 for语句
  格式:for name [ [ in [ word ... ] ] ; ] do list ; done
  for 变量名 in 取值列表; do
  命令
  done
  示例:
  #!/bin/bash
  for i in {1..3}; do
  echo $i
  done
  # bash test.sh
  1
  2
  3

  默认 for 循环的取值列表是以空白符分隔,也就是第一章讲系统变量里的$IFS:
  #!/bin/bash
  for i in 12 34; do
  echo $i
  done
  # bash test.sh
  12
  34

  如果想指定分隔符,可以重新赋值$IFS 变量:
  #!/bin/bash
  OLD_IFS=$IFS
  IFS=":"
  STR="12:34:45"
  for i in $STR; do
  echo $i
  done
  IFS=$OLD_IFS # 恢复默认值
  # bash a.sh
  12
  34
  45

  for 循环还有一种 C 语言风格的语法,常用于计数、打印数字序列:
  for (( expr1 ; expr2 ; expr3 )) ; do list ; done
  #!/bin/bash
  for ((i=1;i
页: [1]
查看完整版本: Shell流程控制