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-判断循环的更多相关文章

  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. 第001弹:Java 中创建对象的4种方式

    Java 是面向对象的语言,不可避免的,“对象”这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法. 总结下来有以下4种创建对象的方法: 使用 new 关键字调 ...

  2. hihoCoder #1246 王胖浩与环

    题目大意 $n$($1\le n\le 2000$)个正整数 $a_1, a_2, \dots, a_n$($a_i\le 5\times 10^7$)分布在一个圆环上. 定义 $b_k$ 为:将环上 ...

  3. [LOJ#526]「LibreOJ β Round #4」子集

    [LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...

  4. Codeforces - Avito Code Challenge 2018

    Portal A. Antipalindrome 暴力. B. Businessmen Problems 暴力. C. Useful Decomposition 居然不是C打头的?! 将一棵树划分成若 ...

  5. 关于PHP xss 和 SQL 注入的问题

    漏洞无非这么几类,XSS.sql注入.命令执行.上传漏洞.本地包含.远程包含.权限绕过.信息泄露.cookie伪造.CSRF(跨站请求)等.这些漏洞不仅仅是针对PHP语言的,PHP如何有效防止这些漏洞 ...

  6. <编程精粹:编写高质量C语言代码> 读书笔记

    0.规则<The Elements of Programming Style><The Elements of Style> 1.假想的编译程序(1)使用编译器提供的所有的可选 ...

  7. Beyond compare vs kdiff3

    這裡使用的 kdiff3 版本是 0.9.98   基於以下 三點,最終選擇了 beyond compare   1. kdiff3 不能刪檔案,     以下為例,不能刪1   2. kdiff3 ...

  8. LeetCode OJ--ZigZag Conversion

    https://oj.leetcode.com/problems/zigzag-conversion/ 将字符串Z形字排列后,再重新一行一行输出. 可以找到每一行字符位置的规律,然后填充进去. 敲代码 ...

  9. 天梯赛 - L2-005 集合相似度

    题目链接:https://www.patest.cn/contests/gplt/L2-005 这个题理解是个大问题啊,“给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合 ...

  10. Xamarin.Forms支持的地图显示类型

    Xamarin.Forms支持的地图显示类型   在Xamarin.Forms中,专门提供了一个Map视图,用来显示地图.根据用户的需求不同,该视图支持三种地图显示类型,用户可以通过Map视图提供的M ...