1. 流程控制if

1.1 基本语法

if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项:

  • [ 条件判断式 ],中括号和条件判断式之间必须有空格。
  • 推荐使用第二种方式。

    1.2 应用实例

    案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出“及格了”,如果小于60,则输出“不及格”。
    图片.png

    2. 流程控制case

    2.1 基本语法

    case $变量名 in
    “值1”)
    如果变量的值等于值1,则执行程序1
    ;;
    “值2”)
    如果变量的值等于值2,则执行程序2
    ;;
    …省略其他分支…
    *)
    如果变量的值都不是以上的值,则执行此程序
    ;;
    esac

2.2 应用实例

案例:当命令行参数是1时,输出“周一”,是2时,输出“周二”,其他情况输出“other”。
图片.png

3. 流程控制for循环

3.1 基本语法1

for 变量 in 值1 值2 值3…
do
程序
done

3.2 应用实例

案例1:打印命令行输入的参数。
图片.png

3.3 基本语法2

for ((初始值;循环控制条件;变量变化))
do
程序
done

3.4 应用实例

案例1:从1加到100的值输出显示,这里可以看出$*和$@的区别。
图片.png

4. 流程控制while循环

4.1 基本语法

while [ 条件判断式 ]
do
程序
done

4.2 应用实例

案例1:从命令行输入一个数n,统计从1+。。。+n的值是多少?
图片.png

5. read读取控制台的输入

5.1 基本语法

read(选项)(参数)

  • 选项:

-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。

  • 参数:

变量:指定读取值的变量名。

5.2 应用实例

案例1:读取控制台输入一个num值。
案例2:读取控制台输入一个num值,在10秒内输入。
图片.png

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”部分。
图片.png

6.2.3 dirname基本语法

功能描述:返回完整路径最后/的前面的部分,常用于返回路径部分。
dirname文件绝对路径:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)。

6.2.4 应用实例

案例1:请返回/home/aaa/test.txt的/home/aaa。
图片.png

6.3 自定义函数

6.3.1 基本语法

[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]。

6.3.2 应用实例

案例1:计算输入两个参数的和。
图片.png

7. shell编程综合案例

图片.png图片.png图片.png图片.png图片.png