首页 > 系统相关 >linux shell 条件语句和循环结构

linux shell 条件语句和循环结构

时间:2023-08-20 15:37:12浏览次数:35  
标签:语句 count shell do echo 循环 done linux

条件语句和循环结构在Shell脚本中用于控制程序的流程,让你可以根据条件决定执行不同的代码块,或者重复执行某些代码。下面是条件语句和循环结构的一些示例和说明:

**条件语句:**

1. **if语句**:

使用 `if` 语句根据条件执行不同的代码块。

if [ "$age" -gt 18 ]; then
echo "成年"
else
echo "未成年"
fi

2. **if-elif-else语句**:

使用 `elif` 可以添加多个条件分支。

if [ "$score" -ge 90 ]; then
echo "优秀"
elif [ "$score" -ge 80 ]; then
echo "良好"
else
echo "一般"
fi

3. **case语句**:

使用 `case` 语句根据不同值进行匹配。

case $day in
"Mon")
echo "星期一"
;;
"Tue")
echo "星期二"
;;
*)
echo "其他"
;;
esac

**循环结构:**

1. **for循环**:

使用 `for` 循环遍历一系列值。

for i in {1..5}; do
echo "Number: $i"
done

2. **while循环**:

使用 `while` 循环在条件满足时重复执行代码块。

count=0
while [ "$count" -lt 5 ]; do
echo "Count: $count"
((count++))
done

3. **until循环**:

使用 `until` 循环在条件不满足时重复执行代码块。

count=0
until [ "$count" -ge 5 ]; do
echo "Count: $count"
((count++))
done

4. **break和continue**:

使用 `break` 可以退出循环,使用 `continue` 可以跳过当前循环。

for i in {1..10}; do
if [ "$i" -eq 5 ]; then
break
fi
echo "Number: $i"
done

继续介绍条件语句和循环结构的内容:

**循环结构:**

5. **嵌套循环**:

可以在循环内部嵌套另一个循环。

for i in {1..3}; do
for j in {1..3}; do
echo "i: $i, j: $j"
done
done

6. **循环控制变量**:

使用 `break` 和 `continue` 来控制循环的执行。

for i in {1..5}; do
if [ "$i" -eq 3 ]; then
continue
fi
echo "Number: $i"
done

7. **无限循环**:

使用 `while true` 或 `for (( ; ; ))` 来创建无限循环。

while true; do
echo "无限循环"
sleep 1
done

8. **循环读取文件内容**:

使用 `while read` 从文件逐行读取内容。

while IFS= read -r line; do
echo "行内容: $line"
done < input.txt

9. **循环数组和关联数组**:

遍历数组和关联数组的元素。

FRUITS=("Apple" "Banana" "Orange")
for fruit in "${FRUITS[@]}"; do
echo "$fruit"
done

declare -A COLORS
COLORS["Red"]="#FF0000"
COLORS["Green"]="#00FF00"
for key in "${!COLORS[@]}"; do
echo "$key: ${COLORS[$key]}"
done

10. **计数循环**:

使用 `seq` 命令来创建计数循环。

for i in $(seq 1 5); do
echo "Number: $i"
done

11. **循环计数器**:

可以使用计数器来追踪循环的次数。

count=0
while [ "$count" -lt 5 ]; do
echo "Count: $count"
((count++))
done

12. **until循环**:

使用 `until` 循环在条件不满足时重复执行代码块。

count=0
until [ "$count" -ge 5 ]; do
echo "Count: $count"
((count++))
done

13. **break和continue**:

使用 `break` 可以退出循环,使用 `continue` 可以跳过当前循环。

for i in {1..10}; do
if [ "$i" -eq 5 ]; then
break
fi
echo "Number: $i"
done

**条件语句:**

4. **测试文件和目录**:

使用 `-d` 判断是否为目录,`-f` 判断是否为普通文件,`-e` 判断文件是否存在等。

if [ -d "$dir" ]; then
echo "是目录"
elif [ -f "$file" ]; then
echo "是文件"
fi

5. **逻辑运算符**:

在条件判断中,可以使用逻辑运算符来组合多个条件。
- 逻辑与:`-a` 或 `&&`
- 逻辑或:`-o` 或 `||`
- 逻辑非:`!`

示例:

if [ "$age" -gt 18 -a "$gender" == "male" ]; then
echo "成年男性"
fi

6. **算术运算符**:

在数学运算中,可以使用算术运算符进行计算。
- 加法:`+`
- 减法:`-`
- 乘法:`*`
- 除法:`/`
- 取余:`%`

示例:

result=$((num1 + num2))

标签:语句,count,shell,do,echo,循环,done,linux
From: https://www.cnblogs.com/yund/p/17644042.html

相关文章

  • linux shell 函数与脚本调试
    **函数:**1.**函数定义**:使用`function`关键字或者直接写函数名来定义函数。functionmy_function(){echo"函数内容"}my_function(){echo"函数内容"}2.**函数调用**:直接使用函数名来调用函数。my_function3.**函数参数**:可以在函数中使用参数来传递值。......
  • Linux驱动开发详解——学习笔记
    Linux设备驱动概述计算机系统的运转需要软件和硬件共同参与,硬件是底层基础,软件则实现了具体的应用。硬件和软件之间则通过设备驱动来联系。在没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口。而在有操作系统的情况下,驱动的架构则由相应的操作系统来定义。驱动存......
  • linux环境编程(1): 实现一个单元测试框架-2
    正片开始在之前的文章中,介绍了如何实现一个类似gtest的单元测试框架,完整的项目代码可以参考这里:https://github.com/kfggww/cutest.近期对cutest的实现做了一些修改,包括:TestSuite的声明宏,修改为TEST_SUITE增加TestSuite的声明宏TEST_SUITE_WITH.可传递Suite的......
  • Linux路由功能练习(1)
    打开一台Linux虚拟机VM1,并添加2块网卡,一个使用VMware1网卡,一个使用VMware2网卡配置VMware1网卡的IP地址为192.168.136.254/24;VMware2网卡的IP地址为192.168.137.254/24[root@nb~]#ifconfigens33192.168.136.254netmask255.255.255.0[root@nb~]#ifconfigens37192.168.1......
  • Linux性能优化宝典
    性能优化性能指标高并发和响应快对应着性能优化的两个核心指标:吞吐和延时应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等性能问题的本质就是系统资源已经到达瓶颈,但请求的处理还不够快,无法支撑更多的请求。性能分析实际上就是找出应用或系统的瓶颈,设法......
  • 3.你所不知道的go语言控制语句——Leetcode习题69
    目录本篇前瞻Leetcode习题9题目描述代码编写控制结构顺序结构(Sequence)声明和赋值多返回值赋值运算符算术运算符位运算符逻辑运算分支结构if语句switch语句逻辑表达式fallthrough类型推断循环语句continuebreakgotoLeetcode习题69题目描述题目分析代码编写本篇小结下篇预告本篇......
  • PHP下的webshell免杀
    异或免杀大多数情况下,开发者为了方便自身的需求,会使用"黑名单"的方式扳掉许多敏感函数,来达到一个表面看上去新相对安全的一个目的,但是却不知道因为这种大意的思维会导致整个系统都处于极度危险中;攻击者以往遇见这种情况。完全可以通过加密的方法可以解决大部分的问题(eg:异或加密,ba......
  • shell脚本基础
    基础命令示例#!/bin/bash固定格式echo"inputstr"输出字符串到屏幕read变量名读取键盘输入test$first==$second&&echo"dengyv"||echo"notdeng"判断字符串是否相等echo"filename"$0。脚本名称echo"totalparamnum"$#。参数个数echo......
  • SQL语句优化
    一、操作符优化1.IN、NOTIN操作符IN和EXISTS性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS代替IN。NotIN不走索引的是绝对不能用的,可以用NOTEXISTS代替2.ISNULL或ISNOTNULL操作 索引是不索引空值的,所以这样的操作不能......
  • windows系统下从硬盘安装linux-ubuntu
    #windows系统下从硬盘安装linux-ubuntu-1.使用系统自带的分区工具,划10G左右的空间当作安装盘。分区格式为FAT32,取个名字叫A。-2.把下载好的ubuntu镜像打开,复制内容到安装盘A。-3.重启电脑,按F12选择硬盘启动项。这里选ubuntu。 ......