bash循环,判断语句总结

bash基本的逻辑判断

for:遍历说有列表的元素

while: 只要判断体为真就一直循环

until: 只要判断体为假就一直循环

if:条件判断语句

在详述这四个命令前,先看下一些基本知识

bash的算数运算

[[email protected] ~]# a=5
[[email protected] ~]# b=7
[[email protected] ~]# echo $a+$b
5+7

上面例子说明a,b是字符不会根据符号自动做运算.

如果要做运算需要$[]括起来, 但是结果是整数

[[email protected] ~]# echo $[$a+$b]
12
[[email protected] ~]# echo $[$a*$b]
35
[[email protected] ~]# echo $[$b/$a]
1

可以用bc命令输出小数

[[email protected] ~]# echo $b/$a | bc -l
1.40000000000000000000

数值的自加自减, 用let命令后面加++, 就表示值自加1, --表示值自减1

[[email protected] ~]# echo $a
5
[[email protected] ~]# let a++
[[email protected] ~]# echo $a
6

明确定义变量为整型

[[email protected] ~]# declare -i a=100
[[email protected] ~]# echo $a
100
[[email protected] ~]# a=50
[[email protected] ~]# echo $a
50
[[email protected] ~]# a=test
[[email protected] ~]# echo $a
0

由上例可以看出整型变量给赋值字符串,一律为0

布尔运算: 用在关系的判断上和语句if, while,until一起用

与运算

真&&真 = 真

真&&假 = 假

假&&真 = 假

假&&假 = 假

或运算

真||真 = 真

真||假 = 真

假||真 = 真

假||假 = 假


整型条件测试

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

-eq 等于

-ne 不等于

格式 [ 数字1 -gt 数字2 ]

数字1大于数字2的运算, 注意数字和[]之间有个空格

字符串条件测试

>: 大于比较ascii码

<: 小于

>=: 大于等于

<=: 小于等于

==: 等于

!=: 不等于

-n: 不空为真, 空为假

-z: 不空为假, 空为真

[[email protected] ~]# a=test
[[email protected] ~]# if [ $a == test ]; then echo "success"; fi
success
[[email protected] ~]# if [ -n $a ]; then echo "success"; fi
success

注意:一定要加中括号, 且有空格.

组合条件测试

与运算 [ 条件1 -a 条件2 ] 或者 条件1 && 条件2,  前者条件1或2 都不用再有中括号了, 后者条件1,2要有中括号

[[email protected] ~]# a=1
[[email protected] ~]# b=1
[[email protected] ~]# if [ $a -eq 1 ] && [ $b -eq 1 ] ; then echo "success"; fi
success
[[email protected] ~]# if [ $a -eq 1 -a  $b -eq 1 ] ; then echo "success"; fi
success

或运算 [ 条件1 -o 条件2 ] 或者 条件1 || 条件2

[[email protected] ~]# a=1
[[email protected] ~]# b=2
[[email protected] ~]# if [ $a -eq 1 -a  $b -eq 1 ] ; then echo "success"; fi
[[email protected] ~]# if [ $a -eq 1 -o  $b -eq 1 ] ; then echo "success"; fi
success

非运算 [ -not 条件 ] 或者 ! 条件, !和条件中间要有空格, !可以放在中括号内或外

[[email protected] ~]# if ! [ $a -eq 2 ] ; then echo "success"; fi
success
[[email protected] ~]# if [ ! $a -eq 2 ] ; then echo "success"; fi
success

文件条件测试

-a, -e 文件: 存在未真, 不存在为假

-f 文件: 普通文件为真, 否则为假

-d: 目录为真, 否则为假

-L/-h: 符号链接为真, 否则为假

-b:块设备为真

-c: 字符设备为真

-S: 套接文件为真

-p: 设备管道为真

下面详细说明这个四个命令的语法以及一些示例

for 变量名 in 列表; do

    循环体

done

变量名:相当于定义从列表中定义变量, 前面不用加$

列表: 用空格或换行符做分隔的字符串. 可以用{1..10} 或 `seq 1 10‘ 表示从1 到10 默认是加1

创建user1到user5的用户

[[email protected] ~]# for i in {6..8}; do useradd user$i; done
[[email protected] ~]# tail /etc/passwd
user6:x:505:505::/home/user6:/bin/bash
user7:x:506:506::/home/user7:/bin/bash
user8:x:507:507::/home/user8:/bin/bash

if

1

if 测试条件; then

        执行语句

fi

#user1存在则打印user1 exists
[[email protected] ~]# if id user1 &> /dev/null; then echo "user1 exists"; fi
user1 exists

2.

if 测试条件; then

    执行语句1

else

    执行语句2

fi

两个分支选其一

#user10存在和不存在打印不同语句
[[email protected] ~]# if id user10 &> /dev/null; then echo "user10 exists"; else echo "user10 does not exist"; fi
user10 does not exist

3.

if 条件1; then

    分支1

eif 条件2; then

    分支2

eif 条件3 then

    分支3

...

else

    分支n

fi

多分支选择

[[email protected] ~]# a=1
[[email protected] ~]# if [ $a -eq 1 ]; then echo "a=1"; elif [ $a -eq 2 ]; then echo "a=2"; else echo " a != 1 or a !=2 "; fi
a=1
[[email protected] ~]# a=2
[[email protected] ~]# if [ $a -eq 1 ]; then echo "a=1"; elif [ $a -eq 2 ]; then echo "a=2"; else echo " a != 1 or a !=2 "; fi
a=2
[[email protected] ~]# a=3
[[email protected] ~]# if [ $a -eq 1 ]; then echo "a=1"; elif [ $a -eq 2 ]; then echo "a=2"; else echo " a != 1 or a !=2 "; fi
 a != 1 or a !=2

while和until循环

while 测试条件; do

    循环体

done

测试条件为真, 一直循环, 为假则跳出

[[email protected] ~]# count=1
[[email protected] ~]# while [ $count -le 10 ]; do echo $count; let count++; done
1
2
3
4
5
6
7
8
9
10

until 测试条件; do

    循环体

done

测试条件为假则一直循环, 为真则跳出

时间: 2024-10-03 14:55:28

bash循环,判断语句总结的相关文章

入门一:python变量、获取值、标准输出、循环判断语句

变量是由字母.数字和下划线组成的,数字不能作为开头. python中没有常量,一般用常量的时候将变量名大写就可以了,注意后面不要修改它的值. 变量命令:使用下划线分隔. 字符编码在代码开头加入一行 1 # -*- coding:utf-8 -*- 获取输入的值input: 普通输入: 1 name = input("name:") 2 age = int(input("age:")) 3 job = input("job:") 4 salary

Python条件循环判断

1.条件判断语句 Python中条件选择语句的关键字为:if .elif .else这三个.其基本形式如下: 1 2 3 4 5 6 7 8 9 age_of_cc = 27 age = int(input("guessage:")) if age == age_of_cc:     print("Yes,you got it!") elif age > age_of_cc:     print("猜大啦!") else:     prin

shell脚本判断语句和循环语句

if判断语句 exit跳出判读语句 不加exit的结果 read -n(不换行) 判断是否输入的是数字 read age[[ $age =~ ^[0-9]+$ ]]if [ $? -ne 0 ]; then echo "你输入的不是一个数字" exit 1fi case判断语句 #!/bin/bashcat <<EOF########################################### 欢迎学习shell编程 #######################

python基础:循环语句和判断语句

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. python语句块和缩进 缩进是Python语法的一部分:在python语句中,空格是用来区分块的,每一块的语句,缩进量(空格)应该是相同的 Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字: 增加缩进表示语句块的开始,而减少缩进则表示语句块的退出. 在Python中,冒号(:)用来标识语

VB的判断语句和循环语句

判断语句 •If语句 if语句共有4种写法: 第一种语法: If 条件判断语句 then 程序代码 第二种语法:If 条件判断语句 then 程序代码 else 程式代码 第三种语法: If 条件判断语句 then 程式代码 Else 程式代码 End if 第四种语法 If 条件判断语句 then Elseif 条件判断语句 then 程式代码 Elseif 条件判断语句 then 程式代码 …… Else 程式代码 End if •Select语句 Select语句的语法是: Select

46 - 不使用 乘除、循环和判断 语句实现 1+...+n

题目: 求 1 + 2 + - + n. 要求不能使用乘除法.for.while.if.else.switch.case 等关键字及条件判断语句(A?B:C) 要实现 1 + 2 + -+ n 不管是循环实现还是递归实现都必须有终止条件. 思路一 循环是让相同的代码执行 n 遍. 使用构造函数和静态成员变量实现.构造 n 个类,构造函数会执行 n 次,用静态变量实现 i 递增, sum 求和. #include <iostream> using namespace std; class Sol

【C语言】不使用循环和判断语句,求出1-100之间所有数的和

//不使用循环和判断语句,求出1-100之间所有数的和 #include <stdio.h> int fun(int n, int *sum) { *sum = *sum + n; (n--) && (fun(n, sum)); return n; } int main() { int n = 100; int sum = 0; fun(n, &sum); printf("%d\n", sum); return 0; } <img src=&q

C#语言中常用的判断语句和循环语句

C#语言中,我们常用的判断语句和循环语句都有哪些呢? 1.if判断 代码格式:if(条件1){ 代码1 }else if(条件2){ 代码2               }else{ 代码N} 意义为:如果条件1成立,则执行代码1,否则判断条件2是否成立,如果成立,则执行代码2,如果以上条件都不成立,执行代码N. 注意:else部分可以省略,省略之后,意义变为"如果以上条件不成立,判断结束":else if 部分可以重复任意次数(一个不写,意义变为如果条件1成立执行代码1,否则执行代码

if判断语句和循环语句

if判断语句 描述 :if条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 语法 : if  表达式  : 执行的代码 else: 执行的代码 多分支if语句: 语法: if  表达式  :  #满足之后执行下面的代码 执行的代码 elif  表达式: #满足之后执行下面的代码  可以有多个 执行的代码 for循环: 描述:for in结构,迭代器 语法:for  变量  in 序列: 执行的代码 example: for循环的嵌套: example whil