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

shell脚本基础与练习

[复制链接]

尚未签到

发表于 2018-8-28 07:49:56 | 显示全部楼层 |阅读模式
  #!bin/bash
  检测脚本是否有语法问题:bash -n

  ID1 AND>  ID1=$(head -15 /etc/passwd |tail -1 |cut -d: -f3)
  ID2=$(head -13 /etc/passwd |tail -1 |cut -d: -f3)

  go to sum>  ID_SUM=$[$ID1+$ID2]

  echo "the>
  echo "the>
  echo "the>  lianxi计算3个用户的ID之和
  ID1=$(id -u EZ)
  ID2=$(id -u linux)
  ID3=$(id -u zhang)

  go to sum>  ID_SUM=$[$ID1+$ID2+$ID3]

  echo "the>
  echo "the>
  echo "the>
  echo "the>  lianxi2计算/etc/XXXXXXXX和/etc/XXXXX文件的空白行数之和
  ID1=$(grep "^[[:space:]]*$" /etc/rc.d/init.d/functions |wc -l)
  ID2=$(grep "^[[:space:]]*$" /etc/rc.d/init.d/network |wc -l)

  go to sum>  ID_SUM=$[$ID1+$ID2]

  echo "the>
  echo "the>
  echo "the>  条件测试
  成功:0失败:1-255
  数值测试 数值之间的比较
  -eq 是否等于
  A=1
  B=1
  第一种写法[  $A -eq $B  ]记得第一个括号之后跟两个空格
  echo $?
  0
  B=3
  [ $A -eq $b]
  echo $?
  1-255
  -ne 是否不等于
  -gt 是否大于
  -ge 大于等于
  -lt 小于
  -le 是否小于等于
  第二种写法: test 2 -eq 3
  echo $?
  1-255
  第三种写法 `EXPRESSION`一般用于字符表示时
  练习:判断centos用户ID是否比Ubuntu用户ID大?
  ID1=$(id -u centos)
  ID2=$(id -u ubuntu)

  [  $ID1 -gt $ID2  ] && echo "centos>  字符串测试
  == 是否等于
  列如[  ubuntu == ubuntu  ]
  echo $?
  0
  列U=ubuntu
  [  ubuntu == $U  ]
  echo $?
  0
  注意在字符比较的时候尽量使用""为了避免语法出错
  例如[  ubuntu == "$?"  ]
  > 是否大于
  < 是否小于
  != 是否不等于
  =~ 左侧字符串是否能够被右侧的PATTERN所匹配
  name=ubuntu
  [[ "$name" =~ buntu ]]
  echo $?
  0
  [[ "$name" =~ buntuu ]]
  echo $?
  1-255
  练习:判断主机名是否包含linux,如果不包含的话,则修改为linux
  调取主机名:hostname
  HN=$(hostname)
  注意应为hostname 是个命令,所以需要用$()起来
  [[ "$HN" =~ linux ]]
  echo $?
  0
  最终答案:
  [[ "$HN" =~ magedu ]] || hostname magedu
  -z 判断字符串是否为空,为真
  -n 判断字符串是否不为空
  练习:主机名如果为空,或者为localhost.locadomain 或者包含localhost 或者包含Linux 则
  通通将其设为www.magedu.com
  hn=$(hostname)
  [  -z "$hn" -o "$hn"=="localhost.locadomain" -o "$hn"=~"localhost" -o "$hn"=~"linux"  ] && hostname www.magedu.com
  文件测试
  存在性测试
  -a file
  -e file 文件的存在性测试,如果存在,则为真。
  [  -e /etc/passwd ]
  echo $?
  0
  文件的测试类型
  -b file 是否为块设备
  -c file 是否为字符设备
  -d file 是否为目录
  -f file 是否为普通文件
  -h 或者-L是否为符号链接
  -p file 是否为管道设备
  -S file 是否为套接字文件
  [  -c /dev/null ] && echo "null 是字符设备"
  文件权限测设
  -r 对当前用户是否可读
  -w 对当前用户是否可写
  -x 对当前用户是否可执行
  [  -r /etc/passwd ] && echo "passwd 当前用户可读"
  文件,是否有内容
  -s file 是否有内容
  时间戳
  -N file 文件自从上次操作之后,是否被改过
  从属关系测试
  -O file 当前用户是否为文件的属主
  -G file 当前用户是否为文件的属组
  双目测试
  FILE1 -ef FILE2 是否指向同一个文件系统的相同inode的硬连接
  FILE1 -nt FILE2 FILE1文件,是否新于FILE2
  FILE1 -ot FILE2 FILE1文件,是否旧与FILE2
  查看一个文件是否有内容
  test -s linux.com
  echo $?
  2
  但给linux.com文件添加内容后echo "test" > linux.com
  echo $?
  0
  文件自上次访问后是否被改过
  test -N magedu.com
  echo $?
  组合测试条件:
  逻辑运算
  第一种方式:
  command1 && command2 表示并且的关系
  command1 || command2 表示或的关系
  ! command 表示取反
  第二种方式
  expression -a expression 表示并且的关系
  expression -o expression 表示或的关系
  -not !expression 表示取反
  [  -o file -a -x file ] 当前用户是否为file文件的属主,并且是否有执行权限
  exit [n] n表示自己可以指定一个状态码
  注意; shell脚本中,一旦遇到exit时,即将会退出
  练习:一行命令实现,linux用户是否存在,不存在,则添加,如果存在,以状态码为5的方式退出。
  id linux &> /dev/null && exit 5 || useradd linux


运维网声明 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-557478-1-1.html 上篇帖子: shell中的条件判断和比较 下篇帖子: shell脚本if与read语句用法练习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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