shell-判断循环
shell条件测试
- test
- 每个完整的合理的编程语言都具有条件判断的功能、
- bash可以使用test命令,[]和()操作,还有if/then结构
字符串判断
- -n string 判断字符串长度非零
- -z string 判断字符串长度为零
- [root@localhost test]# test -n zyg
- [root@localhost test]# echo $?
- [root@localhost test]# test -n ""
- [root@localhost test]# echo $?
- [root@localhost test]# test -n "x"
- [root@localhost test]# echo $?
- [root@localhost test]# test -z "zyg"
- [root@localhost test]# echo $?
- [root@localhost test]# test -z ""
- [root@localhost test]# echo $?
- [root@localhost test]#
- string1=string2 字符串相等
- string1!=string2 字符串不相等
- [root@localhost test]# test "root"="root"
- [root@localhost test]# echo $?
- [root@localhost test]# test "root"="Root"
- [root@localhost test]# echo $?
- [root@localhost test]#
整数判断
- integer1 -eq integer2 相等
- integer1 -ge integer2 大于等于
- integer1 -gt integer2 大于
- integer1 -le integer2 小于等于
- integer1 -lt integer2 小于
- integer1 -ne integer2 不等于
- [root@localhost test]# test -eq
- [root@localhost test]# echo $?
- [root@localhost test]# [ -gt ]
- [root@localhost test]# echo $?
- [root@localhost test]#
文件类型判断
- -d FIle 文件存在并是一个目录
- -e File 文件存在
- -f File 文件存在并是一个普通文件
- -s File 文件存在并不是空文件
文件权限判断
- -r File 文件存在并具有读权限
- -w File 文件存在并具有写权限
- -x File 文件存在并具有执行权限
- || 逻辑或 前边命令失败执行后边的命令
- && 逻辑与 前边命令成功后运行后边命令
shell分支if语句
- if [条件1]
- then 动作1
- fi
双分支结构
- if [条件1]
- then 动作1
- else
- 动作2
- fi
多分支结构
- if [条件1]
- then 动作1
- elif [条件2]
- then 动作2
- …………、
- else
- 动作n
- fi
判断条件1是否为真,如果为真,执行语句1,如果为假,判断条件2,若条件2为真,执行语句1.。。。若所有条件都为假,执行语句n
shell分支case语句
- case 变量 in
- 模式1)
- 动作1
- ;;
- 模式2)
- 动作2
- ;;
- ... ...
- 模式N)
- 动作N
- ;;
- *)
- 动作
- ;;
- esac
shell循环for语句
- for 变量 in 值1 值2 值3 ...
- do
- 动作1
- 动作2
- ... ...
- done
- for ((设置计数器;测试计数器;增加计数器))
- do
- 动作1
- 动作2
- ... ...
- done
列表循环
- selcet 变量 in 命令1 命令2 命令3 ... ...
- do
- 都能做
- done
- 生成命令列表
shell循环while语句
- while 条件
- do
- 动作1
- 动作2
- ... ...
- done
- 当while后条件为真的时候,就执行do和done之间的语句,知道条件为假结束
- while true
- do
- ...
- done
- :shell里叫做空指令,什么也不做
shell循环until语句
- until 条件
- do
- 动作1
- 动作2
- ... ...
- done
- 当until后的条件wi假的时候,就执行do 和done之间的语句,知道条件为真结束
shell循环控制continue,break,exit
- break 跳出整个循环
- continue 跳出当前循环,不在执行continue后面的语句,进入下一次循环
- exit 会直接退出整个程序,
shell练习
- ?root@zyg test?# vim ./z.sh
- #!/bin/bash
- for ((i=?i<=5;i++))
- do
- if id user$i &> /dev/null
- then echo "user$i is exists!"
- else
- echo "create user$i..."
- useradd user$i &> /dev/null
- echo "" | passwd --stdin user$i &> /dev/null
- echo "user$i create seucess"
- fi
- done
- #!/bin/bash
- for ((g=?g<=$;g++))
- do
- for ((j=;j<=$;j++))
- do
- echo -n "*"
- done
- echo
- done
- #!/bin/bash
- for ((i=;i<=($+)/;i++))
- do
- for ((n=;n<=($+)/-i;n++))
- do
- echo -n " "
- done
- for ((j=;j<=$i*-;j++))
- do
- echo -n "*"
- done
- echo
- done
- #!/bin/bash
- num=$
- for ((i=;i<=($num+)/;i++))
- do
- for ((k=;k<=($num+)/-i+;k++))
- do
- echo -n " "
- done
- for ((j=;j<=i*-;j++))
- do
- echo -n "*"
- done
- echo
- done
- for ((n=;n<=($num-)/;n++))
- do
- for ((p=;p<=($num-)/-n;p++))
- do
- echo -n " "
- done
- for ((o=;o<=n*+;o++))
- do
- echo -n "*"
- done
- echo
- done
- for ((l=;l<=($num-)/;l++))
- do
- for ((m=;m<=($num+)/;m++))
- do
- echo -n " "
- done
- echo "*"
- done
- #!/bin/bash
- for ((g=;g<=($+)/;g++))
- do
- for ((j=;j<=($+)/-g;j++))
- do
- echo -n " "
- done
- for ((i=;i<=g*-;i++))
- do
- echo -n "*"
- done
- echo
- done
- for ((k=;k<=($-)/;k++))
- do
- for ((n=;n<=k;n++))
- do
- echo -n " "
- done
- for ((l=;l<=$-*k;l++))
- do
- echo -n "*"
- done
- echo
- done
- #!/bin/bash
- for ((i=;i<=;i++))
- do
- for ((j=;j<=i;j++))
- do
- echo -n "$i*$j=$?$i*$j? "
- done
- echo
- done
- #!/bin/bash
- if [ $USER = "root" ]
- then
- /etc/init.d/sshd start
- else
- echo " please start sshd serivce"
- fi
更多请自己测试,网上案例很多,我只不过是代码的搬运工,只是走了下这个流程
shell-判断循环的更多相关文章
- shell 各种循环判断
shell支持的循环有 Shell if else Shell case esac Shell for循环 Shell while循环 Shell until循环
- shell脚本--循环结构
shell的循环结构有while和for两种 for循环 #!/bin/bash #文件名:test.sh i=4 for i in 2 4 6 8 10 do echo $i done echo $ ...
- shell脚本-循环选择语句
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...
- Shell while循环详解
while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环. Shell while 循环的用法如下: while ...
- shell判断一个变量是否为空方法总结
shell中如何判断一个变量是否为空 shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下: 1.变量通过" "引号引起来 1 2 ...
- 没事就要多做多练,Shell脚本循环例题做一做
Shell脚本循环例题 一.示例1 二.示例2 三.示例3 四.示例4 ...
- Shell双重循环、图形排列及九九乘法表
Shell双重循环.图形排列及九九乘法表 目录 Shell双重循环.图形排列及九九乘法表 一.双重循环 1. 双重循环概述 2. 双重循环结构 二.循环特殊操作 1. exit 2. break 3. ...
- 3.shell脚本循环试题
shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...
- shell判断文件是否存在
转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bi ...
- Linux Shell系列教程之(十二)Shell until循环
本文是Linux Shell系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Lin ...
随机推荐
- [BZOJ3261] 最大异或和 (异或前缀和,可持久化Trie)
Description 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Q l r x:询问操作, ...
- RestAssured打印日志到文件中的方法
参考https://stackoverflow.com/questions/14476112/how-to-get-rest-assured-log-into-something-printable- ...
- ADO:DataSet合并两张表( ds.Merge(ds1))
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 长度rem的使用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 介绍一款移动端滚动加载的插件---dropload
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 第5章-unix网络编程 TCP/服务端程序示例
这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的 客户端代码 #include "unp. ...
- 对于drawRect使用,谨慎使用!
#1.drawRect简介drawRect方法在UIView的使用上起着十分关键的作用.不知道大家注意过没有,每一次创建UIView子类文件时候,会有自动带有已注释的drawRect方法,也许从这一点 ...
- 某考试 T3 bitboard
bitboardDiscription 天才发明家小K 制造了一块比特板.板子上有2^n个比特元,编号为0 ∼ 2^n−1.每个比特元
- Failed to check the status of the service报错解决
报这个错误是因为我的application_context.service.xml 文件里的的dubbo声明暴露口时的ref属性写错了. <dubbo:service interface=&qu ...
- MyBatis_SelectKey使用oracle 序列插入主键
mapper 如下: 使用<selectkey>实现 也可以使用oracle的row 级触发器trigger实现: <?xml version="1.0" enc ...