shell之循环

本文深入讲解了Shell脚本中的for循环、while循环及双层for循环的使用方法,包括不同格式的for循环示例,如计数循环和序列循环,以及如何利用循环实现网络检查、倒计时和打印乘法表等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.for循环

格式:
for  条件
do  
    动作
done

方式1:
for ((i=1;i<=10;i++))
do
     echo $i
done

方式2:
for A in `seq num`
do
    echo $A
done


练习1:检查网络是否通
       

执行脚本:

 

练习2:倒计时

 

 

脚本执行结果:

 

2.whlie循环

格式:
while 条件
do
    动作
done

练习:每隔2秒查看一次系统时间

脚本执行结果如下:

 

3.双层for循环

练习:打印 9*9 乘法表

脚本执行结果:

 

 

 

 

 

### 如何处理或避免Shell脚本中的死循环 在编写Shell脚本时,死循环是一个常见问题。如果条件始终不满足终止标准,则可能导致程序无休止运行。为了有效应对这种情况,在设计`while`和`until`这样的循环结构时应特别注意[^1]。 对于防止死循环的发生,可以采取如下措施: - **确保存在更新机制**:每次迭代过程中应当有变量被修改以趋向于使跳出条件最终得以达成。例如,在计数器型的循环里增加或减少某个数值。 ```bash counter=0 limit=5 while [ $counter -lt $limit ]; do echo "Counter is now at $counter" ((counter++)) done ``` - **设定最大尝试次数**:引入额外的安全阀来限定最多允许执行多少次循环。一旦达到这个上限就强制退出,即使正常结束条件还未触发。 ```bash max_attempts=10 attempt=0 until some_command || [[ $attempt -eq $max_attempts ]]; do echo "Attempt number $(($attempt + 1))" sleep 1s # 延迟一秒再试下一次 ((attempt++)) done ``` - **利用超时功能**:某些情况下可以通过设置定时器的方式让长时间未完成的任务自动中断。这通常适用于等待外部资源响应的情况。 使用GNU `timeout`命令可以在一定时间后停止进程: ```bash timeout 60 bash -c 'while : ;do echo waiting...;sleep 10;done' ``` 上述方法有助于构建更加健壮可靠的Shell脚本,降低因意外情况造成无限循环的风险。同时也要记得定期审查代码逻辑,确保其行为符合预期并能妥善处理各种边界状况[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值