shell
编程入门指南(三)
---
大头针
三、控制结构:
C
的程序结构与
Shell
的程序结构大同小异。
3.1
选择结构:
1.If
结构
if [ conditon1 ]
then
statments1
elif [ condition2 ]
then
statments2
else
statments3
fi
2.case
结构
case variable in
value) command1
exit 0
;
value) command 2
exit 0
;
esac
3.2.
循环结构:
1.for
结构
for name [in list]
do
statements using $name
done
1.list
应该是一系列由空格分隔的字符序列(单词)
,省略
in list
时默认为
$@(
命令行的参数列表
)
2.for
循环执行的次数取决于列表
list
中单词的个数
3.
在
for
循环体中一般要出现变量
$name,
但也可以不出现。
2.
循环结构:
until
until [ condition ]
do
statments
done
condition
条件成立退出循环
3.
循环结构:
while
循环
while [ condition ]
do
statments
done
条件不成立退出循环
备注:
还有一些经常与循环结合的命令:
比如
break
[n]
、
continue [n]
。
和
C
中
break
Continue
功能基本一致。只不过
break
可以选择跳出几层循环、
continue
可以选择跳过几个回合。
shell
编程入门指南(四)
---
大头针
四、命令
熟悉了上面三部分内容对于我们写
shell
程序奠定了基础。但巧妇难为无米之炊
。
shell
程序的主体内容是
shell
所提供的命令:例如
cp ls useradd
。
如果你没有系统学习过
shell
的命令,你是写不出来
shell
程序的。
最后得出结论:
变量
+
条件
+
程序结构
+shell
命令
==shell
程序。
五、实例:
1.
编写
shell
程序,
实现自动增加
50
个账号的功能。
账号名为
stud1
至
stud50
。
#! /bin/bash
#useradd.sh
#
i
这属于变量
i=1
#while
这属于程序结构
while [ $i -le 50 ]
do
#cat ...
命令的含义是使用管道以及正则表达式查看
passwd
文件中是否存在类似
#stud1-stud50
之间的用户
.
这属于
shell
命令
# -z
测试字符串是否为空
.
这属于条件
if [ -z "`cat /etc/passwd|grep "stud$i\>"`" ]
then
useradd stud$i
echo "useradd success!"
else
"user stud$i exist!"
fi
done
最终验证了我的结论:
shell
程序
=
变量
+
条件
+
程序结构
+shell
命令。
一开始接触
linux
shell
,大多都认为比较难学。但按照上面的学习思路,很快你就会学会
shell
编程。
六、补充知识:
函数:
Shell
也提供了函数机制。格式如下:
[function] NAME() {command-list;}
返回值:
return [n]
将函数的返回值设定为
n .
若不指定
n
值,则使用
return
之前所执行的最后一个命令的状
态值。
$?
执行后命令后的状态
实例:
#
!
/bin/bash
function psgrep
{
ps
–
aux|grep $1
}