shell中的for、while、until

本文详细介绍了如何在Bash脚本中使用for循环进行列表遍历,包括直接列出元素、从变量读取列表以及从命令读取值等操作,并提供了具体的示例代码。
for var in list
do
    commands
done

在每个迭代中,变量var会包含列表中的当前值,第一个迭代会使用列表中的第一个值,第二个迭代使用第二个值。

在do和done中,$var变量包含着这次迭代对应的当前值。

只要你愿意,可以将do语句和for语句放在同一行,但必须用分号将其同列表中的值分开。
for var in list;do。

 

#! /bin/bash
for test in Alabama Alaska Arizona Arkansas California Colorado
do
    echo The  next state is $test
done

在最后一次迭代后,$test变量的值会在shell脚本的剩余部分一直保持有效。它会一直保持最后一次迭代的值(除非你修改了它)。

 

shell看到for列表值中的单引号并尝试使用它们来定义一个单独的数据值,这个过程一团混乱。

两种解决办法:

1)使用转义字符(反斜线)来将单引号转义

2)使用双引号来定义用到单引号的值。

如:

for test in I don't  know if this'll work
do 
    echo "word: $test"
done
执行结果:
liuxj@liuxj-Lenovo:~/shell_test$ ./for_test 
word: I
word: dont  know if thisll
word: work

修改后

for test in I don\'t  know if "this'll" work
do 
    echo "word: $test"
done
执行结果:
liuxj@liuxj-Lenovo:~/shell_test$ ./for_test 
word: I
word: don't
word: know
word: if
word: this'll
word: work

for循环假定每个中值都是用空格分割的。注意:如果有包含空格的数据值,可用双引号将其包含起来,shell不会将双引号当成值的一部分。

 

从变量读取列表

通常shell脚本遇到的情况是,将一系列值都集中在一个变量中,然后需要遍历整个列表。

list="Alabama Alaska Arizona Arkansas Colorado"
list=$list" Connecticut"
for state in $list
do
echo "Have you ever visited $state?"
done

结果:

Have you ever visited Alabama?
Have you ever visited Alaska?
Have you ever visited Arizona?
Have you ever visited Arkansas?
Have you ever visited Colorado?
Have you ever visited Connecticut?

注意:代码中用了另一个赋值语句来向$list变量包含的已有列表添加了一个值。这是向变量中存储的已有文本字符串尾部添加文本的一个常用方法。

 

从命令读取值

用反引号来执行任何能产生输出的命令。在states的文件中输入一些参数。

file="states"
for state in `cat $file`
do
    echo "Visit beautiful $state"
done

 

在linux中,目录名和文件名中包含空格当然是合法的,要容纳这种值,你应该将$file变量用双引号圈起来。

 

shell脚本中多行的注释:

if false; then

语句1

语句2

语句3

语句4

fi

如:

#! /bin/bash
if false;then
for test in Alabama Alaska Arizona Arkansas California Colorado
do
    echo The  next state is $test
done
fi

 

转载于:https://www.cnblogs.com/Caden-liu8888/p/6084014.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值