我把所有的循环语句都放在这里好了,下午还要买书,时间来不及了。
(旁白:真不负责)
for:
for的语法结构为:
for 变量 in list
do
operation
done
作用:每次循环会把一个值从list中取出。
例:
#!/bin/bash
for aa in $(ls /)
do
echo $aa
done
这个脚本会把根目录下的目录名在每次循环赋予aa(每次循环赋予一个,直至赋完)。
不要试图一次赋2个变量,除非你把read写在operation位置。
如果你想方便地一次赋两个变量,你可以考虑把它写到while的condition位置中,比如下面。
while:
while的语法为:
while condition
do
operation
done
例:
#!/bin/bash
IFS=:
while read aa bb cc
do
echo $aa
echo $bb
echo $cc
done
这个脚本需要你在执行时给它输入一个文件,比如test.sh < /etc/passwd
如果你感觉这样做对于使用者会造成一些逻辑上的麻烦,可以考虑命令块的结构:
#!/bin/bash
IFS=:
{
while read aa bb cc
do
echo $aa
echo $bb
echo $cc
done } < $1
这样改进之后,就可以把文件作为参数来写了,当你把一个这种结构的脚本放进$PATH,基本上会给人一种使用指令的感觉,比如:test.sh /etc/passwd
将command作为while的condition的好处在于如果read到末尾read不出来东西了该condition就会返回一个false,while就会停止,这是一种很合理的用法。
select:
select的语法为:
select 变量 in list
do
operation
done
注:这里的list的作用是一个选项的列表——select和for的工作方式完全不一样,但它的工作方式是循环的,所以我才把select放在这里。
select会形成一个选项菜单,你执行那个脚本时要做的就是选择菜单项的序号。
到目前为止我们还没写出一个能输出像样的东西的脚本吧……现在我们用select写一个:
#!/bin/bash
select aa in $(ls /)
do
ls /$aa
done
挺像“窗口”使用上的逻辑吧?
until:
until的语法为:
until condition
do
operation
done
until就是until的意思,不需要解释了吧?
直到condition为ture,才结束循环。
PS:
我妈妈说:快下雨了,赶紧去买书吧,别回来浇湿了。
我说:没关系,我喜欢下雨时出门。
我妈妈说:你喜欢自己洗衣服吗?
阅读(1154) | 评论(0) | 转发(0) |