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

[经验分享] linux _for循环语句

[复制链接]

尚未签到

发表于 2018-5-20 11:37:57 | 显示全部楼层 |阅读模式
  for:语法格式
  for 变量 in 列表; do
  循环语句
  done
  

  for I in 1 2 3 4 5;do
  加法运算
  done
  遍历完成之后,退出:
  如何生成列表:
  {1..100}
  declare  -i sum=0 定义sum为整形
  -x 声明成环境变量
  `seq [起始数 步进长度] 结束数`
  #!/bin/bash
  declare -i SUM=0
  for I in {1..100};do
  letSUM=$SUM+$I
  done
  echo “The sum is :$SUM.”
  2.向每个用户问好
  [root@localhost ~]# LINES=`wc -l/etc/passwd | cut -d':' -f1`
  [root@localhost ~]# for I in `seq 1 $LINES`;do echo "Hello,`head -$I /etc/passwd |tail -1 |cut -d':' -f1`";done
  写一个脚本,
  1.设定变量FILE的值为/etc/passwd
  2.向每个用户问好,并显示用户的shell。列如Hello,root,your shell :/bin/bash
  #!/bin/bash
  #
  FILE=/etc/passwd
  LINE=`wc -l $FILE |cut -d' ' -f1`
  for I in `seq 1 $LINE`;do
  echo "Hello,`head -$I /etc/passwd |tail -1 |cut -d':' -f1`,yourshell:`head -$I /etc/passwd |tail -1 |cut -d':' -f7`"
  done
  3 统计一共有多少个用户
  只向默认shell 为bash的用户问声好
  #!/bin/bash
  #
  LL=`sed -r -n '/bash/'p /etc/passwd |wc -l`
  for I in `seq 1 $LL`; do
  echo"Hello,`sed -r -n '/bash$/'p /etc/passwd | head -$I | tail -1 |cut -d':'-f1`"
  done
  写一个脚本
  添加10个用户user1 到user10 ,但是要求只有用户不存在的情况下才能添加:
  #!/bin/bash
  #
  for I in{1..10};do
  iduser$I  &>/dev/null
  if [ $? -eq 0 ]; then
  echo "yonghucunzai"
  else
  useradd user$I &>/dev/null
  echo "user$I" |passwd --stdinuser$I &>/dev/null
  echo "add user$I OK"
  fi
done
扩展:接受一个参数
Add :添加用户uer1..user10
Del : 删除用户:user1..user10
  #!/bin/bash
  #
  if [ $#-eq 1 ];then
  if [ $1 ='add' ];then
  for I in {1..10};do
  id user$I &>/dev/null
  if [ $? -eq 0 ]; then
  echo "yonghucunzai"
  else
  useradd user$I &>/dev/null
  echo "user$I" |passwd--stdin user$I &>/dev/null
  echo "add user$I OK"
  fi
  done
  elif [ $1= 'del' ];then
  for I in {1..10};do
  id user$I &> /dev/null
  if [ $? -eq 0 ];then
  userdel -r  user$I
  echo "del user OK"
  else
  echo "no such user"
  exit 1
  fi
  done
  else
  echo " add&del"
  fi
  else
  echo "qing churu yige canshu,del&add"
fi


写一个脚本 计算100以内所有能被3整除的正整数的和
  #!/bin/bash
  #
  declare-i M
  M=0
  for I in{1..100};do
  if [ `echo "$I%3"|bc` -eq 0];then
  M=$I+$M
  else
  M=$M
  fi
  done
echo "sum=$M"


写一个脚本计算100以内所有奇数的和以及所有偶数的和;分别显示之;
  #!/bin/bash
  #
  declare-i M
  declare-i J
  declare-i B
  M=0
  J=0
  for I in{1..100};do
  B=`echo "$I%2"|bc`
  if [ $B -eq 0 ];then
  M=$I+$M
  else
  J=$I+$J
  fi
  done
  echo"oushu=$M;jishu=$J"


写一个脚本。分别显示当前系统上所有默认的shell 为bash 的用户和默认shell为/sbin/nologin的用户,并统计各类shell下的用户总数显示结果如:
  #!/bin/bash
  #
  M=`sed -n'/bash$/p' /etc/passwd |wc -l`
  J=`sed -n'/\/sbin\/nologin$/p' /etc/passwd |wc -l`
  for I in`seq 1 $M`;do
  echo "`sed -n '/bash$/p' /etc/passwd|head -$I |tail -1 |cut -d':' -f1` is bash"
  done
  for I in`seq 1 $J`;do
  echo "`sed -n '/\/sbin\/nologin$/p'/etc/passwd |head -$I |tail -1 |cut -d':' -f1` is /sbin/nologin"
  done
echo "/bash=$M;/sbin/nologin=$J"

运维网声明 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.yunweiku.com/thread-463915-1-1.html 上篇帖子: linux & windows porting 下篇帖子: Linux命令总结1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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