设为首页 收藏本站
查看: 1057|回复: 0

shell2-pl

[复制链接]

尚未签到

发表于 2018-8-23 09:17:17 | 显示全部楼层 |阅读模式
  $?
  [  ]
  整数判断
  -eq   equal   [ 1 -eq 1 ]
  -ne   not equal
  -lt   less than
  -le   less and equal
  -gt   greater than
  -ge   greater and equal
  #echo $?
  0
  [test]#[ 1 -eq 2 ]
  [test]#echo $?
  1
  #[ 2 -ne 3 ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  字符串判断
  [ string1 == string2 ]  是否相同
  [ string1 != string2 ]  是否不相同
  [ string ]  判断字符串是否不为空
  [ -z string ] 判断字符串长度是否为零
  [ -n string ] 判断字符串长度是否不为零
  [test]#[ abc == def ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  1
  [test]#[ abc != def ]
  [test]#echo $?
  0
  [test]#[ abc ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  [test]#[ "" ]
  [test]#echo $?
  1
  [test]#[ -z abc ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  1
  [test]#[ -z "" ]
  [test]#echo $?
  0
  [test]#[ -n abc ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  [test]#[ -n "" ]
  [test]#echo $?
  1
  逻辑判断
  -a  [ expr1 -a expr2 ]   // and 两个条件同时满足
  -o  [ expr1 -o expr2 ]   // or  两个条件成立一个就行
  !   [ ! expr ]     //取反
  [test]#[ 2 -gt 1 -a 3 -gt 2 ]
  [test]#echo $?
  0
  [test]#[ 2 -gt 1 -a 3 -gt 4 ]
  [test]#echo $?
  1
  [test]#[ 2 -gt 1 -o 3 -gt 4 ]
  [test]#echo $?
  0
  [test]#[ ! 2 -gt 1 ]
  [test]#echo $?
  1
  -------------
  [[ patten ]]
  [[ patten1 && patten2 ]]
  [[ patten1 || patten2 ]]
  [test]#[[ abc == [ab]bc ]]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  [test]#[[ bbc == [ab]bc ]]
  [test]#echo $?
  0
  [test]#[[ cbc == [ab]bc ]]
  [test]#echo $?
  1
  [test]#[[ abc == [ab]bc && bbc == [ab]bc ]]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  [test]#[[ abc == [ab]bc || cbc == [ab]bc ]]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  -------------------
  文件的判断
  -a file    如果文件存在,那么为真
  [test]#[ -a /etc/passwd ]
  You have new mail in /var/spool/mail/root
  [test]#echo $?
  0
  练习:
  把/etc/*.conf 打包压缩以后,备份到 /backup 目录,gzip格式,一当天的日期加上etc2bak  20130828etc2bak.tar.gz
  # vim sh09.sh
  #!/bin/bash
  if [ ! -d  /backup ]
  then
  mkdir  /backup
  fi
  date=`date "+%Y%m%d"`
  echo $date
  if [ ! -e /backup/${date}etc2bak.tar.gz ]
  then
  tar zcf /backup/${date}etc2bak.tar.gz  /etc/*.conf
  else
  exit 1
  fi
  # chmod +x sh09.sh
  # ./sh09.sh
  练习:
  输入一个整数, 现判断一下是否是分数。如果不是分数 显示“请输入分数”。    如果分数100~90,显示“优秀”,如果分数89~80, 显示“中等”,如果分数79~70,显示“加油”,剩余的“要好好努力才行啊”
  #vim s10.sh
  #!/bin/bash
  read -p "请输入分数:" num
  if [ $num -le 100 -a $num -ge 0 ]
  then
  if [ $num -le 100 -a $num -ge 90 ]
  then
  echo "优秀"
  elif [ $num -lt 90 -a $num -ge 80 ]
  then
  echo "中等"
  elif [ $num -lt 80 -a $num -ge 70 ]
  then
  echo "加油"
  else
  echo "要好好努力才行啊"
  fi
  else
  echo "请输入分数"
  fi
  -------------------
  case  多分支判断
  格式
  case $var in
  value1)
  command;
  command;
  ;;
  value2)
  command;
  command;
  ;;
  value3)
  command;
  command;
  ;;
  *)
  command;
  command;
  ;;
  esac
  [test]#vim s11.sh
  #!/bin/bash
  read -p "请输入用户名:" username
  case $username in
  root)
  echo "你好 root";
  ;;
  mike)
  echo "你好 mike";
  ;;
  tom)
  echo "你好 tom";
  ;;
  *)
  echo "请回吧~"
  ;;
  esac
  [test]#chmod +x s11.sh
  [test]#./s11.sh
  请输入用户名:root
  你好 root
  [test]#./s11.sh
  请输入用户名:tom
  你好 tom
  [test]#./s11.sh
  请输入用户名:mike
  你好 mike
  [test]#./s11.sh
  请输入用户名:john
  请回吧~
  [test]#vim s12.sh
  #!/bin/bash
  read -p "请输入用户名:"  username
  read -s -p "请输入密码:" password
  case $username,$password in
  root,redhat)
  echo "欢迎光临,管理员";
  ;;
  *)
  echo "请离开这里,私人领域";
  ;;
  esac
  # chmod +x s12.sh
  #./s12.sh
  请输入用户名:root
  请输入密码:
  欢迎光临,管理员
  -------------------------
  循环
  for
  语法
  for 变量  in  取值范围(一组值)
  do
  command
  command
  done
  取值范围
  1) 直接写
  #!/bin/bash
  for i in a b c d e f g h
  do
  echo $i
  done
  [test]#./s13.sh
  a
  b
  c
  d
  e
  f
  g
  h
  2) 位置参数传递
  [test]#vim s14.sh
  #!/bin/bash
  for i in "$*"
  do
  echo $i
  done
  echo "-----------"
  for j in "$@"
  do
  echo $j
  done
  [test]#./s14.sh  a b c d e f g
  a b c d e f g
  -----------------
  a
  b
  c
  d
  e
  f
  g
  3) 省略的写法
  [test]#vim s15.sh
  #!/bin/bash
  for i in {1..9}
  do
  echo $i
  done
  [test]#chmod +x s15.sh
  [test]#./s15.sh
  1
  2
  3
  4
  5
  6
  7
  8
  9
  4) 使用系统命令
  # vim s16.sh
  #!/bin/bash
  for i in `seq 1 10`
  do
  echo $i
  done
  #chmod +x s16.sh
  [test]#./s16.sh
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  # vim s16.sh
  #!/bin/bash
  for i in `seq 1 2 10`
  do
  echo $i
  done
  # vim s17.sh
  #!/bin/bash
  for i in `awk -F: '{print $1}' /etc/passwd`
  do
  echo $i
  done
  # vim s18.sh
  #!/bin/bash
  for username in `awk -F: '{print $1}' /etc/passwd`
  do
  uid=`id $username|awk -F "=" '{print $2}'|awk -F "(" '{print $1}'`
  #uid=`id $username|awk -F "[=(]" '{print $2}'`
  if [ $uid -eq 0 ]
  then
  echo "$username 超级用户"
  elif [ $uid -gt 0 -a $uid -lt 500 ]
  then
  echo "$username 系统用户"
  else
  echo "$username 普通用户"
  fi
  done
  #./s18.sh
  root  超级用户
  bin   系统用户
  daemon
  adm     普通用户
  lp
  sync
  shutdown
  halt
  mail
  练习:找出局域网中存活的ip个数,把存活的ip追加到/test/ip文件中
  # vim s19.sh
  #!/bin/bash
  touch /test/ip
  num=0
  wd=`ifconfig|grep 'Bcast'|grep '255\.255\.255\.0'|awk  -F: '{print $2}'|awk -F. '{print $1"."$2"."$3"."}'`
  for ip in `seq 1 254`
  do
  ping -c 1 $wd$ip &>/dev/null
  if [ $? -eq 0 ]
  then
  echo $wd$ip >> /test/ip
  num=$[$num+1]
  fi
  done
  echo "存活的ip个数是 $num"
  练习: 99乘法表
  # vim s20.sh
  #!/bin/bash
  for i in `seq 1 9`
  do
  for j in `seq 1 $i`
  do
  echo -n $i*$j"="$[$i*$j]" "
  fi
  done
  echo
  done
  ------------------------------------
  while
  语法
  while [ 条件表达式 ]
  do
  commands  //当条件表达式为真,执行命令;假的话,结束循环
  变量的更新
  done
  # vim s22.sh
  #!/bin/bash
  i=1
  while [ $i -le 3 ]
  do
  id q$i &>/dev/null
  if [ $? -ne 0 ]
  then
  useradd q$i
  fi
  i=$[$i+1]
  echo $i
  done
  # chmod 777 s22.sh
  # ./s22.sh
  ------------
  until
  语法
  until [ 条件表达式 ]
  do
  command
  变量更新
  done
  # vim s25.sh
  #!/bin/bash
  i=1
  until [ $i -gt 3 ]
  do
  id q$i &>/dev/null
  if [ $? -ne 0 ]
  then
  useradd q$i
  fi
  i=$[$i+1]
  echo $i
  done


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555377-1-1.html 上篇帖子: shell 颜色 下篇帖子: shell指令的总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表