shell脚本之while循环

#!/bin/bash
while true
do
load=w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1
#将系统负载复制到load变量中
if [ KaTeX parse error: Expected 'EOF', got '#' at position 91: … #̲当load大于10 th…load"
#发邮件
fi
sleep 30
#30秒查一次
done

[root@allen shell]# uptime
14:29:13 up 5:33, 2 users, load average: 0.00, 0.01, 0.05

[root@allen shell]# w
14:29:25 up 5:33, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 08:56 5:33m 0.01s 0.01s -bash
root pts/0 admin.innet.com 08:57 5.00s 0.17s 0.00s w

#!/bin/bash
while :
do
read -p "Please input a number: " n
if [ -z “$n” ] #变量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

### 如何在 Shell 脚本中编写或调试 While 循环 #### 编写 While 循环 `while` 循环是一种常用的控制结构,在满足特定条件的情况下重复执行一组命令。以下是 `while` 循环的基本语法: ```bash while condition do command1 command2 ... done ``` 其中,`condition` 是一个布尔表达式,当它为真时会反复执行循环体内的命令。 下面是一个简单的例子,展示如何使用 `while` 循环打印从 1 到 5 的数字[^1]: ```bash #!/bin/bash count=1 while [ $count -le 5 ] do echo "Count is: $count" count=$((count + 1)) done ``` 此脚本初始化变量 `count` 并通过 `[ $count -le 5 ]` 来判断是否继续运行循环。每次迭代都会增加计数器的值,并将其输出到终端。 #### 实现复杂逻辑的 While 循环 更复杂的场景可能涉及文件读取或其他操作。例如,可以使用 `read` 命令逐行读取文件的内容[^3]: ```bash #!/bin/bash file="data.txt" while IFS= read -r line do echo "$line" done < "$file" ``` 上述代码片段展示了如何打开名为 `data.txt` 的文件并将每一行作为单独的一次循环输入进行处理。 #### 调试 While 循环 为了有效调试 `while` 循环,开发者通常采用以下几种方法之一或者组合使用它们: - **设置 `-x` 参数**:启动脚本前加上 `set -x` 可以使每条被执行的指令都显示出来,帮助定位错误位置。 ```bash set -x ``` - **日志记录**:向标准输出或指定的日志文件追加额外的信息有助于追踪程序状态变化过程中的细节情况[^2]。 ```bash while some_condition do action_to_perform logger "Action performed at $(date)" done ``` - **逐步验证中间结果**:如果怀疑某部分计算有问题,则可以在该处加入临时性的回显语句以便观察实际产生的数据形式。 综上所述,掌握这些技巧能够显著提高开发效率以及减少潜在问题的发生几率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值