1. 流程控制if
1.1 基本语法
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格。
- 推荐使用第二种方式。
1.2 应用实例
案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出“及格了”,如果小于60,则输出“不及格”。
2. 流程控制case
2.1 基本语法
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
2.2 应用实例
案例:当命令行参数是1时,输出“周一”,是2时,输出“周二”,其他情况输出“other”。
3. 流程控制for循环
3.1 基本语法1
for 变量 in 值1 值2 值3…
do
程序
done
3.2 应用实例
案例1:打印命令行输入的参数。
3.3 基本语法2
for ((初始值;循环控制条件;变量变化))
do
程序
done
3.4 应用实例
案例1:从1加到100的值输出显示,这里可以看出$*和$@的区别。
4. 流程控制while循环
4.1 基本语法
while [ 条件判断式 ]
do
程序
done
4.2 应用实例
案例1:从命令行输入一个数n,统计从1+。。。+n的值是多少?
5. read读取控制台的输入
5.1 基本语法
read(选项)(参数)
- 选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
- 参数:
变量:指定读取值的变量名。
5.2 应用实例
案例1:读取控制台输入一个num值。
案例2:读取控制台输入一个num值,在10秒内输入。
6. 函数
6.1 函数介绍
shell编程和其他编程语言一样,有系统函数,也可以自定义函数。系统函数中,此处就只介绍两个。
6.2 系统函数
6.2.1 basename基本语法
功能描述:返回完整路径最后/的部分,常用于获取文件名。
basename [pathname] [suffix]。
basename [string] [suffix]:basename命令会删除掉所有的前缀包括最后一个(‘/‘)字符,然后将字符串显示出来。
选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
6.2.2 应用实例
案例1:请返回/home/aaa/test.txt的“test.txt”部分。
6.2.3 dirname基本语法
功能描述:返回完整路径最后/的前面的部分,常用于返回路径部分。
dirname文件绝对路径:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)。
6.2.4 应用实例
案例1:请返回/home/aaa/test.txt的/home/aaa。
6.3 自定义函数
6.3.1 基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]。
6.3.2 应用实例
案例1:计算输入两个参数的和。
7. shell编程综合案例





