F::
while
语法如下:
while(condition)
do
commands
done
例如:
#!/bin/bash
number=0
while(test $number -lt 10)
do
echo "$number\c"
number=`expr $number+1`
done
echo
-----------------------------------------
结果如下:
0123456789
G::
until
语法如下:
until(condition)
do
commands
done
它和while的不同只在于while是在条件为真时执行循环,而until是在条件为假时执行循环。
H::
break及continue
这两者是用于for,while,until等循环控制下的。break会跳到done后才执行,而continue会跳至
done后才执行,而continue会跳至done执行,继续执行循环。
I::
case
语法如下:
case str in
pat1) commands1;;
pat2) commands2;;
pat3) commands3;;
esac
而pat除了可以指定一些确定的字符串,也可以指定字符串的集合,如下:
* 任意字符串
? 任意字符
[abc] a,b,c三字符其中之一
[a-n] 从a到n的任一字符
│ 多重选择
例如:
test8.sh
-----------------------------------------------------------
#!/bin/bash
echo `enter A,B,C:"
read letter
case $letter in
A│a) echo `you entered A.`;;
B│b) echo `you entered B.;;
C│c) echo `you entered C,;;
*) echo `not a,b,c`;;
esac
----------------------------------------------------------------------
J::
函数
格式如下:
function-name()
{
commands
}
而要调用此函数,就像在命令行下直接用命令一般。
test1()
{
echo`this is fuction 1`
}
test2()
{
echo`this is fuction2`
}
test2
test1
------------------------------------------------------
运行结果:
this is fuction2
this is fuction1
下面是一些常用的shell例子:
例1 给一批文件改名。
\ls *.c* sed `s/\(.*\).C\(.*\)/mv & \1/` │sh
或者
for f in *.foo;
fo
base=`basename $f. foo`
mv $f $base.bar
done
例2 将大写文件名发亮写为小心改为小安下心来文件名。
for f in *;do
mv $f `echo $f│tr `[a-z] ` ][a-z]
done