什么没有 发表于 2018-8-29 14:07:52

Shell笔记之三for、while及case

  第三章Shell for、while及case
  For语句语法如下
  for 变量名 in 取值列表
  do
  命令序列
  Done
  案例,根据姓名列表创建用户
  # vim /root/users.txt
  jerry
  tom
  xiaoming
  # vim shelltest/usersadd.sh
  #!/bin/bash
  ULIST=$(cat /root/users.txt)
  for UNAME in $ULIST
  do
  useradd $UNAME
  echo "123456"| passwd --stdin$UNAME
  done
  使用while循环语句
  While循环语句语法结构
  while 条件测试操作
  do
  命令序列
  done
  案例
  批量添加规律编号用户
  # vimshelltest/useraddwhile.sh
  #!/bin/bash
  USERS="work"
  i=1
  while [ $i -le 5 ]
  do
  useradd ${USERS}$i
  echo "123456"|passwd --stdin${USERS}$i &> /dev/null
  let i++
  done
  "shelltest/useraddwhile.sh" [新] 9L, 139C 已写入
  # shshelltest/useraddwhile.sh
  # tail -5 /etc/passwd
  work1:x:500:500::/home/work1:/bin/bash
  work2:x:501:501::/home/work2:/bin/bash
  work3:x:502:502::/home/work3:/bin/bash
  work4:x:503:503::/home/work4:/bin/bash
  work5:x:504:504::/home/work5:/bin/bash
  case分支语句
  case语句主要适用以下情况:某个变量存在多种取值,需要对其中的每一种取值分别进行不同的命令序列。
  语法结构如下
  case 变量值 in
  模式1)
  命令序列1
  ;;
  模式2)
  命令序列2
  ;;
  *)
  默认命令序列
  esac
  使用case分支语句时,要注意以下几点
  case行尾必须为单词“in”每一模式必须以右括号“)”结束
  双分号“;;”表示命令序列的结束
  模式字符串中,可以用方括号表示一个连续的范围,例如“”也可用”|”表示如“A|B”
  最后的“*)”表示默认模式,其中的*相当于通配符。
  案例
  检查用户输入的字符类型
  # vimshelltest/typeselect.sh
  #!/bin/bash
  read -p " 请输入一个字符,并按Enther确认:" C
  case $C in
  )
  echo "您输入的是数字$C"
  ;;
  |)
  echo "您输入的是字母$C"
  ;;
  *)
  echo "您输入的是空格、功能键或其它控制字符$C"
  esac
  "shelltest/typeselect.sh" 12L, 253C已写入
  # shshelltest/typeselect.sh
  请输入一个字符,并按Enther确认:5
  您输入的是数字5
  案例二编写系统服务脚本
  # vim shelltest/myprog
  #!/bin/bash
  case "$1" in
  start)
  echo -n "正在启动sleep服务..."
  if `sleep 5` ; then
  echo "OK"
  fi
  ;;
  stop)
  echo -n "正在停止sleep服务..."
  pkill "sleep"&>/dev/null
  echo "OK"
  ;;
  status)
  if pgrep "sleep"&> /dev/null ;then
  echo "sleep服务以经启动"
  else
  echo "sleep服务以经停止"
  fi
  ;;
  restart)
  $0 stop
  $0 start
  ;;
  *)
  echo "用法:$0{start|stop|status|restart}"
  esac
  ~
  ~
  ~
  # ./shelltest/myprogrestart
  正在停止sleep服务...OK
  正在启动sleep服务...OK

页: [1]
查看完整版本: Shell笔记之三for、while及case