shell条件测试,运算符,选择结构,for循环结构

一、shell条件测试      man bash  //查看帮助

条件测试的命令

test 选项 文件名或目录名

[ 选项 文件名或目录名 ]

例:

[ -e /etc/passd ]

文件状态

-f              //判断是不是文件,是文件为真

-d //判断是不是目录,是目录为真

-e //判断是不是存在,存在为真

-r //判断是否可以阅读,可以阅读为真

-w //判断是否可写,可写为真

-x //判断是否可执行,可执行为真

-l //判断是否为链接,是链接为真

数值比较(整数比较)

[ 数值1 选项 数值2 ]

test 数值1 选项 数值2

等于 -eq

不等于 -ne

小于 -lt

小于等于 -le

大于 -gt

大于等于  -ge

h

[ 字符选项比较 ]

等于 ==

不等于 !=

-z 字串为空为真

! -z 字串不为空为真

例:

[ $USER==root ] && echo "admin"

[ -z $w  ]

逻辑比较(判断时,是2个或2个以上条件时使用逻辑判断)

逻辑与  &&  或用 -a   多个条件要同时成立

逻辑或  ||  或用 -o   或用多个条件只要有一个条件成立就可以

逻辑非  !  取号  -z为空  !-z 加了叹号也就是取反不为空

[ 5 -gt 6 ] || [ 7 lt 8 ] || [ 0 -lt 1 ]

[ 5 -gt 6 -o 7 -lt 8 -o 0 -lt 1 ]

流程控制 是否执行 取决于条件判断的判断结果是否为真。条件判断结果为真,

流程控制才会执行,反之不会执行。对不同的对象做判断,要用不同的判断方式和选项

二、Shell运算符与运算命令

+ - * / %

++ --

+= -= *= /= %=

运算命令

expr 数值1 运算符 数值2

例1:

#!/bin/bash

#计算用户从终端输入的任意2个数的和

read -p "请输入第一个数" num1

read -p "请输入第二个数" num2

sum=`expr $num1 + $num2`

echo "$num1 + $num2 = $sum"

例2

expr 只能做整数运算 默认返回计算结果

#expr num1 + num2 - num3 \* num4        //乘号要做转义

#expr 10 % 8

#a=10

#b=20

#sum=`expr $a + $b`

++ 自加运算 每次数字自动加1

-- 自减运算 每次数字自动减1

let 只做运算,不返回计算结果

let 变量运算符

i=1

let i++     //i=i+1

echo $i

j=10

let j--    //j=j-1

echo $j

+= -= *- /= %=

i=10

let i+=2   //i=i+2

echo $i

加法算的第二种运算方式 $(()) $[] 的使用

#echo $((10*30))

#x=10

#b=20

#echo $((x*y))

#echo $[10*30]

i=10

echo $((++i))    //先执行运算,后参与程序

i=10

echo $((i++))    //先参与程序,后执行运算

Shell里的流程控制

选择结构 if    (只有条件判断结果为真时,才执行相应的操作)

单分支

if 条件

条件判断成立时,要执行的操作

.......

fi

例:

read -p "please input ip address" addr

if [ -z $addr ];then

echo "你没有输入要ping的ip地址"

exit

fi

ping -c 3 $addr &> /dev/null

if [ $? -eq 0 ];then

echo "主机在线"

fi

echo "script over"

双分支

if 条件测试命令;then

条件判断成立时,要执行的操作

.........

else

条件判断不成立时,要执行的操作

.........

fi

#!bin/bash

service sshd status &> /dev/null

if [ $? -eq 0 ];then

echo "sshd in running"

else

service sshd start

fi

多分支

if 条件测试命令1;then

条件测试成立时执行的命令序列

......

......

elif 条件测试命令2;then

条件测试成立时执行的命令序列

......

......

elif 条件测试命令3;then

条件测试3成立时执行的命令序列

......

......

elif 条件测试命令N;then

条件测试N成立时执行的命令序列

......

......

else

以上所有的条件判断都成立时执行的命令

......

......

fi

循环结构(反复执行相同操作时,使用循环结构)

for语法格式

for 变量名 in 变量值列表

do

当变量值列表有值赋给变量名时,执行的语句块

......

.....

doneasswd

#!/bin/bash

#for i in 1 2 3 4 5

#for i in `seq 30 45`

#for i in `seq 254`

#for i in `seq 10 2 30`

#for i in {1..30}

#for i in {a..z}

for i in `head /etc/`

for i in `ls /shell/*.sh`

do

echo $i

done

while

C-for

until

分支结构 case   (根据变量值的匹配结果执行相应的操作)

时间: 2024-10-10 14:37:55

shell条件测试,运算符,选择结构,for循环结构的相关文章

Shell脚本基础、使用变量、条件测试及选择、列表式循环

Shell语言 脚本:可以运行,一个文件,可以实现某种功能(命令的堆积) [[email protected] ~]# vim /root/stu.sh echo hello worldcat /etc/redhat-releaseuname -rhostname ifconfig | head -2 [[email protected] ~]# chmod +x /root/stu.sh [[email protected] ~]# /root/stu.sh 案例1:书写一个创建用户的脚本 [

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)一.Java标识符给类.接口.方法等命名的字符序列.1.标识符组成(1)英文字母大小写:(2)数字(不能以数字开头):(3)$和_.2.命名规则常量:每个单次字母均大写,若由多个单词组成,则每个单词间用下划线隔开.变量.方法:第一个单词全部小写,若由多个单词组成,则第一个单词全部小写,从第二个单词开始,每个单词首字母大写其他单词首字母小写.包:所有字母都小写,多级包采用域名反写,每级用"."隔开.类.接口:每个单词首字

黑马程序员— C语言选择结构和循环结构的总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 在学习完C语言的流程控制后,发现选择结构跟循环结构都各自有各自的特点,下面就来对选择结构与循环结构进行一个综合的总结 第一讲  选择结构与循环结构 选择结构主要包括if语句和switch语句,而循环结构包括for循环,while循环以及do while循环: 一 选择结构 1.if(条件){ }else if(条件2){ }else{ } 特点:同一时刻只有一个大括号里面的代码会执行. 2.s

Java语法基础(四)----选择结构的循环结构

一.循环结构: 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环. 循环语句的组成: 初始化语句:一条或者多条语句,这些语句完成一些初始化操作. 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体. 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情. 控制条件语句:这个部分在一次循环体结束后,下一

Java基础之结构-->>条件结构与循环结构

Java中程序流程控制语句包括条件结构.循环结构和跳转语句 4.1条件结构 条件结构包括顺序结构和选择结构.顺序结构在程序执行中没有跳转和判断,知道程序结束为止.选择结构包括 if 语句,if-else 语句,switch 语句,在程序执行过程中可以改变程序的执行流程. 4.1.1 if 语句 if 语句是条件判断后再处理的一种语法结构 if(条件表达式){ //条件成立后执行 一条或多条语句 } //条件表达式的值只能是 boolean 类型 false / true 4.1.2 if-els

shell条件测试test

shell条件测试可以通过以下两种方式: test   参数    测试内容 [ 参数  测试内容 ] 一.测试文件类型: test  -e   文件名          (测试文件是否存在) [ -e  文件名 ]                测试文件是否存在,注意中括号两边的空格 test -f   文件名             判断是否为普通文件 test -d   文件名            判断是否为目录 test -b   文件名            判断是否为块设备文件 t

shell条件测试语句实例-测试apache是否开启

终于理解了shell条件测试语句”!=“和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/bin/bash # www.jquerycn.cn web=`/usr/bin/pgrep httpd` if [ -n "$web" ]; //$web返回值是否为空 then echo "httpd is running" else /etc/init.d/httpd start f

3.分支结构与循环结构

1 程序结构 程序结构分为顺序结构.分支结构.循环结构.分支结构有:if结构,if....else结构,if...else if....else ,if...else结构,switch结构:循环结构有:while循环,do....while循环,for循环. 2 分支结构 ①if结构  语法: if(布尔表达式){ //语句; } 执行过程:如果布尔表达式为true执行其下语句,布尔表达式为false时不执行其下语句. {}可以省略,如果省略将执行第一个语句块.为了程序的可读性推荐不要省略{}

shell的编程结构体(函数、条件结构、循环结构)

1.1 shell函数 在shell中,函数可以被当作命令一样执行,它是命令的组合结构体.可以将函数看成是一个普通命令或者一个小型脚本. 首先给出几个关于函数的结论: (1).当在bash中直接调用函数时,如果函数名和命令名相同,则优先执行函数,除非使用command命令.例如:定义了一个名为rm的函数,在bash中输入rm执行时,执行的是rm函数,而非/bin/rm命令,除非使用"command rm ARGS". (2).如果函数名和命令别名同名,则优先执行别名.也就是说,在优先级