shell条件测试

  1. test
  2. 每个完整的合理的编程语言都具有条件判断的功能、
  3. bash可以使用test命令,[]和()操作,还有if/then结构

字符串判断

  1. -n string 判断字符串长度非零
  2. -z string 判断字符串长度为零
  1. [root@localhost test]# test -n zyg
  2. [root@localhost test]# echo $?
  3.  
  4. [root@localhost test]# test -n ""
  5. [root@localhost test]# echo $?
  6.  
  7. [root@localhost test]# test -n "x"
  8. [root@localhost test]# echo $?
  9.  
  10. [root@localhost test]# test -z "zyg"
  11. [root@localhost test]# echo $?
  12.  
  13. [root@localhost test]# test -z ""
  14. [root@localhost test]# echo $?
  15.  
  16. [root@localhost test]#
  1. string1=string2 字符串相等
  2. string1!=string2 字符串不相等
  1. [root@localhost test]# test "root"="root"
  2. [root@localhost test]# echo $?
  3.  
  4. [root@localhost test]# test "root"="Root"
  5. [root@localhost test]# echo $?
  6.  
  7. [root@localhost test]#

整数判断

  1. integer1 -eq integer2 相等
  2. integer1 -ge integer2 大于等于
  3. integer1 -gt integer2 大于
  4. integer1 -le integer2 小于等于
  5. integer1 -lt integer2 小于
  6. integer1 -ne integer2 不等于
  1. [root@localhost test]# test -eq
  2. [root@localhost test]# echo $?
  3.  
  4. [root@localhost test]# [ -gt ]
  5. [root@localhost test]# echo $?
  6.  
  7. [root@localhost test]#

文件类型判断

  1. -d FIle 文件存在并是一个目录
  2. -e File 文件存在
  3. -f File 文件存在并是一个普通文件
  4. -s File 文件存在并不是空文件

文件权限判断

  1. -r File 文件存在并具有读权限
  2. -w File 文件存在并具有写权限
  3. -x File 文件存在并具有执行权限
  1. || 逻辑或 前边命令失败执行后边的命令
  2. && 逻辑与 前边命令成功后运行后边命令

shell分支if语句

  1. if [条件1]
  2. then 动作1
  3. fi

双分支结构

  1. if [条件1]
  2. then 动作1
  3. else
  4. 动作2
  5. fi

多分支结构

  1. if [条件1]
  2. then 动作1
  3. elif [条件2]
  4. then 动作2
  5. …………、
  6. else
  7. 动作n
  8. fi

判断条件1是否为真,如果为真,执行语句1,如果为假,判断条件2,若条件2为真,执行语句1.。。。若所有条件都为假,执行语句n

shell分支case语句

  1. case 变量 in
  2. 模式1)
  3. 动作1
  4. ;;
  5. 模式2)
  6. 动作2
  7. ;;
  8. ... ...
  9. 模式N)
  10. 动作N
  11. ;;
  12. *)
  13. 动作
  14. ;;
  15. esac

shell循环for语句

  1. for 变量 in 1 2 3 ...
  2. do
  3. 动作1
  4. 动作2
  5. ... ...
  6. done
  1. for ((设置计数器;测试计数器;增加计数器))
  2. do
  3. 动作1
  4. 动作2
  5. ... ...
  6. done

列表循环

  1. selcet 变量 in 命令1 命令2 命令3 ... ...
  2. do
  3. 都能做
  4. done
  5. 生成命令列表

shell循环while语句

  1. while 条件
  2. do
  3. 动作1
  4. 动作2
  5. ... ...
  6. done
  7. while后条件为真的时候,就执行dodone之间的语句,知道条件为假结束
  1. while true
  2. do
  3. ...
  4. done
  5. shell里叫做空指令,什么也不做

shell循环until语句

  1. until 条件
  2. do
  3. 动作1
  4. 动作2
  5. ... ...
  6. done
  7. until后的条件wi假的时候,就执行do done之间的语句,知道条件为真结束

shell循环控制continue,break,exit

  1. break 跳出整个循环
  2. continue 跳出当前循环,不在执行continue后面的语句,进入下一次循环
  3. exit 会直接退出整个程序,

shell练习

  1. ?root@zyg test?# vim ./z.sh
  2. #!/bin/bash
  3. for ((i=?i<=5;i++))
  4. do
  5. if id user$i &> /dev/null
  6. then echo "user$i is exists!"
  7. else
  8. echo "create user$i..."
  9. useradd user$i &> /dev/null
  10. echo "" | passwd --stdin user$i &> /dev/null
  11. echo "user$i create seucess"
  12. fi
  13. done

  1. #!/bin/bash
  2. for ((g=?g<=$;g++))
  3. do
  4. for ((j=;j<=$;j++))
  5. do
  6. echo -n "*"
  7. done
  8. echo
  9. done

  1. #!/bin/bash
  2. for ((i=;i<=($+)/;i++))
  3. do
  4. for ((n=;n<=($+)/-i;n++))
  5. do
  6. echo -n " "
  7. done
  8. for ((j=;j<=$i*-;j++))
  9. do
  10. echo -n "*"
  11. done
  12. echo
  13. done

  1. #!/bin/bash
  2. num=$
  3. for ((i=;i<=($num+)/;i++))
  4. do
  5. for ((k=;k<=($num+)/-i+;k++))
  6. do
  7. echo -n " "
  8. done
  9. for ((j=;j<=i*-;j++))
  10. do
  11. echo -n "*"
  12. done
  13. echo
  14. done
  15. for ((n=;n<=($num-)/;n++))
  16. do
  17. for ((p=;p<=($num-)/-n;p++))
  18. do
  19. echo -n " "
  20. done
  21. for ((o=;o<=n*+;o++))
  22. do
  23. echo -n "*"
  24. done
  25. echo
  26. done
  27. for ((l=;l<=($num-)/;l++))
  28. do
  29. for ((m=;m<=($num+)/;m++))
  30. do
  31. echo -n " "
  32. done
  33. echo "*"
  34. done

  1. #!/bin/bash
  2. for ((g=;g<=($+)/;g++))
  3. do
  4. for ((j=;j<=($+)/-g;j++))
  5. do
  6. echo -n " "
  7. done
  8. for ((i=;i<=g*-;i++))
  9. do
  10. echo -n "*"
  11. done
  12. echo
  13. done
  14. for ((k=;k<=($-)/;k++))
  15. do
  16. for ((n=;n<=k;n++))
  17. do
  18. echo -n " "
  19. done
  20. for ((l=;l<=$-*k;l++))
  21. do
  22. echo -n "*"
  23. done
  24. echo
  25. done

  1. #!/bin/bash
  2. for ((i=;i<=;i++))
  3. do
  4. for ((j=;j<=i;j++))
  5. do
  6. echo -n "$i*$j=$?$i*$j? "
  7. done
  8. echo
  9. done

  1. #!/bin/bash
  2. if [ $USER = "root" ]
  3. then
  4. /etc/init.d/sshd start
  5. else
  6. echo " please start sshd serivce"
  7. fi

更多请自己测试,网上案例很多,我只不过是代码的搬运工,只是走了下这个流程

shell-判断循环的更多相关文章

  1. shell 各种循环判断

    shell支持的循环有 Shell if else Shell case esac Shell for循环 Shell while循环 Shell until循环

  2. shell脚本--循环结构

    shell的循环结构有while和for两种 for循环 #!/bin/bash #文件名:test.sh i=4 for i in 2 4 6 8 10 do echo $i done echo $ ...

  3. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  4. Shell while循环详解

    while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环. Shell while 循环的用法如下: while  ...

  5. shell判断一个变量是否为空方法总结

    shell中如何判断一个变量是否为空 shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下: 1.变量通过" "引号引起来 1 2 ...

  6. 没事就要多做多练,Shell脚本循环例题做一做

    Shell脚本循环例题                 一.示例1                 二.示例2                 三.示例3                 四.示例4 ...

  7. Shell双重循环、图形排列及九九乘法表

    Shell双重循环.图形排列及九九乘法表 目录 Shell双重循环.图形排列及九九乘法表 一.双重循环 1. 双重循环概述 2. 双重循环结构 二.循环特殊操作 1. exit 2. break 3. ...

  8. 3.shell脚本循环试题

    shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...

  9. shell判断文件是否存在

    转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bi ...

  10. Linux Shell系列教程之(十二)Shell until循环

    本文是Linux Shell系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Lin ...

随机推荐

  1. [BZOJ3261] 最大异或和 (异或前缀和,可持久化Trie)

    Description 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Q l r x:询问操作, ...

  2. RestAssured打印日志到文件中的方法

    参考https://stackoverflow.com/questions/14476112/how-to-get-rest-assured-log-into-something-printable- ...

  3. ADO:DataSet合并两张表( ds.Merge(ds1))

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  4. 长度rem的使用

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. 介绍一款移动端滚动加载的插件---dropload

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 第5章-unix网络编程 TCP/服务端程序示例

    这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的  客户端代码 #include "unp. ...

  7. 对于drawRect使用,谨慎使用!

    #1.drawRect简介drawRect方法在UIView的使用上起着十分关键的作用.不知道大家注意过没有,每一次创建UIView子类文件时候,会有自动带有已注释的drawRect方法,也许从这一点 ...

  8. 某考试 T3 bitboard

                    bitboardDiscription    天才发明家小K 制造了一块比特板.板子上有2^n个比特元,编号为0 ∼ 2^n−1.每个比特元

  9. Failed to check the status of the service报错解决

    报这个错误是因为我的application_context.service.xml 文件里的的dubbo声明暴露口时的ref属性写错了. <dubbo:service interface=&qu ...

  10. MyBatis_SelectKey使用oracle 序列插入主键

    mapper 如下: 使用<selectkey>实现 也可以使用oracle的row 级触发器trigger实现: <?xml version="1.0" enc ...