day08:while、break、continue、exit

本文深入解析Bash脚本中的while循环语法及其应用案例,包括系统负载监控脚本、数字输入验证、循环控制关键字如break、continue及exit的使用方法。

while循环语法:while  条件;do .......;done

案例1:写一个监控负载的脚本:

[root@localhost_02 shell]# cat while.sh 
#!/bin/bash
while :
#冒号表示循环,此处可以用1或者true都可以;
do 
     load=`uptime|awk -F 'load average: ' '{print $2}'|cut -d . -f1`
     if [ $load -ge 10 ]
     then 
              /usr/local/sbin/mail.py xxx@163.com "load high" "$load"
     fi
     sleep 30 
#休眠30秒后,继续检测系统的负载;
done
[root@localhost_02 shell]# sh -x while.sh 
+ :
++ awk -F 'load average: ' '{print $2}'
++ cut -d . -f1
++ uptime
+ load=0
+ '[' 0 -ge 10 ']'
+ sleep 30
若想这种脚本不意外的终止,可以打开screen,在screen跑脚本;

注释

uptime表示查看awk系统的负载,(可以用w,不过需要结合head -1使用):

awk -F 'load average: ' '{print $2}  表示以load  average为分隔符,并打印第二端:

cut -d .  -f1  表示用cut命令以 . 点作为分隔符,取第一个字符:

while循环案例2:输入一个数字,如果不是数字,则一直输入,输入是数字后则正常显示:

[root@localhost_02 shell]# cat while1.sh 
#!/bin/bash
while :
do 
      read -p "Please input number: " n
      if [ -z "$n" ]
      then
        echo "you need input sth"
        continue
      fi
      n1=`echo $n|sed s/[0-9]//g`
      if [ -n "$n1" ]
      then 
      echo "you just only input numbers"
      continue
      fi
      break
done 
echo $n
[root@localhost_02 shell]# sh while1.sh 
Please input number: 
you need input sth
Please input number: 
you need input sth
Please input number: sdfs
you just only input numbers
Please input number: 2
2

注释:contiune   继续循环:     

break:用于循环语句,直接结束所有循环:当数字等于3时,则结束所有循环:

注释:如下图例表示结束了if和for循环,然后继续打印echo内容:

[root@localhost_02 shell]# cat break.sh 
#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i -eq 3 ]
#比较数字,用-eq ;若是比较的是字符串,那需要用 ==
    then
       break
    fi
    echo $i
done
echo aaaaa
检测:
[root@localhost_02 shell]# sh -x break.sh 
++ seq 1 5
+ for i in '`seq 1 5`'
+ echo 1
1
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ echo 2
2
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ echo 3
3
+ '[' 3 -eq 3 ']'
+ break
+ echo aaaaa
aaaaa
[root@localhost_02 shell]# sh break.sh 
1
1
2
2
3
aaaaa
[root@localhost_02 shell]# 

continue:结束本次循环,忽略continue下面的代码,直接进行下一次循环:

注释:如下图例表示忽略了本次continue下的代码(条件是等于3),其余代码正常运行:

[root@localhost_02 shell]# cat con.sh 
#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i -eq 3 ]
    then
	continue
    fi
    echo $i
done
echo bbbbb
[root@localhost_02 shell]# sh con.sh 
1
1
2
2
3
4
4
5
5
bbbbb

exit:退出整个脚本,用来确定脚本运行到什么位置时结束:

注释:如下图例表示直接退出整个脚本了:

[root@localhost_02 shell]# cat exit.sh 
#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i -eq 3 ]
    then
	exit
    fi
     echo $i
done
echo $ccccc
[root@localhost_02 shell]# sh exit.sh 
1
1
2
2
3

转载于:https://my.oschina.net/yuanhaohao/blog/2994881

<think>首先,用户的问题是:“我想获取C#中控制结构的使用说明和列表 请问C# 控制结构使用说明 条件语句和循环语句列表”。所以,我需要提供C#中控制结构的说明,特别是条件语句和循环语句的列表。 根据系统指令: - 所有行内数学表达式必须使用$...$格式。但这里没有数学表达式,所以可能不需要。 - 独立公式必须使用$$...$$格式并单独成段。同样,这里可能不适用。 - LaTeX语法正确:确保任何数学表达正确。 - 使用中文回答。 - 生成相关问题:在回答结束时生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。参考引用是提供的,所以我需要基于这些引用构建回答。 参考引用: - [^1]: 讨论了C#条件语句与循环控制结构,包括条件语句。 - [^2]: 详细描述了C#的循环结构,如for、while、do...while、循环嵌套、goto、breakcontinue等。 - [^3]: 关于C#控制语句和循环,特别是if-else if语句。 - [^4]: 讨论了C#基础条件语句、循环语句、goto语句,包括do-while循环。 用户要求“控制结构的使用说明和列表”,特别指定“条件语句和循环语句列表”。所以,我需要: 1. 提供条件语句的使用说明和列表。 2. 提供循环语句的使用说明和列表。 3. 基于引用,确保内容准确。 结构回答: - 清晰、逐步解决问题。 - 使用中文。 - 结束时生成相关问题。 - 添加引用标识。 大纲回答: 1. **引言**:简要介绍C#控制结构的重要性,基于引用[^1]。 2. **条件语句**: - 解释if、if-else、if-else if语句。 - 语法和示例。 - 基于引用[^1]、[^3]。 3. **循环语句**: - 列出for、while、do-while、foreach。 - 解释每个循环的语法、用法和示例。 - 包括循环控制语句如breakcontinue、goto(基于引用[^2]、[^4])。 4. **其他控制结构**:简要提及switch语句(虽然用户没指定,但可能相关)。 5. **总结**。 6. **相关问题**:生成2-3个相关问题。 确保引用: - 在相关段落末尾添加[^1]、[^2]等。 生成相关问题: - 例如:如何优化循环性能?条件语句的最佳实践?等。 最终输出: - 使用Markdown格式。 - 代码块用于示例代码。 - 列表用于条件语句和循环语句。 条件语句列表: - if - if-else - if-else if - switch 循环语句列表: - for - while - do-while - foreach - 控制:break, continue, goto 基于引用: - [^2]有for、while、do...while、循环嵌套、goto、breakcontinue。 - [^4]有do-while和goto。 - [^3]有if-else if。</think>### C# 控制结构使用说明:条件语句和循环语句列表 在C#编程中,控制结构是构建程序逻辑的核心工具,它们允许开发者根据条件执行不同代码块或重复执行任务。以下基于权威引用内容,系统化地解释C#中条件语句和循环语句的使用说明,并提供完整列表。内容涵盖语法、用法和示例代码,确保真实可靠。 --- ### 1. 条件语句使用说明 条件语句用于基于布尔表达式(如 `true` 或 `false`)决定代码执行路径。C# 支持多种条件结构,帮助程序分支处理不同场景。 #### 条件语句列表: - **`if` 语句**:检查单个条件,条件为真时执行代码块。 - 语法:`if (条件) { /* 代码块 */ }` - 示例: ```csharp int age = 18; if (age >= 18) { Console.WriteLine("成年人"); } ``` - **`if-else` 语句**:扩展 `if` 语句,添加备选分支(条件为假时执行)。 - 语法:`if (条件) { /* 代码块1 */ } else { /* 代码块2 */ }` - 示例: ```csharp int score = 75; if (score >= 60) { Console.WriteLine("及格"); } else { Console.WriteLine("不及格"); } ``` - **`if-else if` 语句**:处理多个条件分支,依次检查每个条件,直到找到真值或执行 `else` 块。 - 语法:`if (条件1) { /* 代码块1 */ } else if (条件2) { /* 代码块2 */ } else { /* 默认代码块 */ }` - 示例(基于引用[^3]): ```csharp int grade = 85; if (grade >= 90) { Console.WriteLine("优秀"); } else if (grade >= 80) { Console.WriteLine("良好"); // 输出:良好 } else { Console.WriteLine("需改进"); } ``` - **`switch` 语句**:基于变量值匹配多个固定选项,比多个 `if-else if` 更高效。 - 语法:`switch (变量) { case 值1: /* 代码块1 */ break; case 值2: /* 代码块2 */ break; default: /* 默认代码块 */ break; }` - 示例: ```csharp string day = "Monday"; switch (day) { case "Monday": Console.WriteLine("工作日开始"); break; case "Friday": Console.WriteLine("周末临近"); break; default: Console.WriteLine("其他日子"); break; } ``` **关键说明**: - 条件表达式必须是布尔类型(如 `x > 5`)。 - `if-else if` 语句优化了多分支逻辑,避免冗余判断[^3]。 - `switch` 语句支持类型匹配(C# 7.0+),如模式匹配。 --- ### 2. 循环语句使用说明 循环语句用于重复执行代码块,直到满足终止条件。C# 提供了多种循环结构,并支持嵌套和控制语句(如 `break` 或 `continue`)来管理流程。 #### 循环语句列表: - **`for` 循环**:指定初始值、条件和迭代步长,适合已知迭代次数的场景。 - 语法:`for (初始化; 条件; 迭代) { /* 循环体 */ }` - 示例(基于引用[^2]): ```csharp for (int i = 1; i <= 10; i++) { Console.WriteLine(i); // 输出1到10 } ``` - **`while` 循环**:先检查条件,再执行循环体;条件为假时终止。 - 语法:`while (条件) { /* 循环体 */ }` - 示例(基于引用[^2]): ```csharp int count = 0; while (count < 5) { Console.WriteLine(count); count++; // 输出0到4 } ``` - **`do-while` 循环**:先执行循环体一次,再检查条件;保证至少执行一次。 - 语法:`do { /* 循环体 */ } while (条件);` - 示例(基于引用[^4]): ```csharp int j = 0; do { Console.WriteLine(j); // 输出0,1,2,3,4 j++; } while (j < 5); ``` - **`foreach` 循环**:遍历集合(如数组或列表)中的每个元素,无需索引管理。 - 语法:`foreach (类型 变量 in 集合) { /* 循环体 */ }` - 示例: ```csharp string[] names = { "Alice", "Bob", "Charlie" }; foreach (string name in names) { Console.WriteLine(name); } ``` #### 循环控制语句: - **`break`**:立即终止当前循环。 - 示例:`for (int i=0; i<10; i++) { if (i==5) break; } // 当i=5时退出` - **`continue`**:跳过当前迭代,进入下一次循环。 - 示例:`for (int i=0; i<5; i++) { if (i==2) continue; Console.WriteLine(i); } // 跳过i=2` - **`goto` 语句**:跳转到代码标签处,常用于退出多层嵌套循环(但不推荐滥用)。 - 示例(基于引用[^4]): ```csharp for (int i=0; i<3; i++) { for (int k=0; k<3; k++) { if (k==1) goto exitLoop; // 当k=1时跳转 } } exitLoop: Console.WriteLine("跳出循环"); ``` **关键说明**: - 循环嵌套:任何循环都可嵌套使用(如 `for` 内嵌 `while`),但需避免死循环(无限循环),确保条件能终止[^2]。 - 性能:`foreach` 比 `for` 更安全于集合遍历,但 `for` 在索引操作时更高效。 - 控制语句如 `break` 和 `continue` 优化流程,减少冗余计算[^2]。 --- ### 总结 C# 的控制结构包括条件语句(`if`, `if-else`, `if-else if`, `switch`)和循环语句(`for`, `while`, `do-while`, `foreach`),辅以控制语句(`break`, `continue`, `goto`)。这些结构是程序逻辑的基石,能高效处理分支和重复任务。开发中应优先使用 `if-else` 或 `switch` 处理条件分支,`for` 或 `foreach` 处理迭代,避免 `goto` 以提升代码可读性[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值