一、函数介绍
shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。
1、系统函数
basename
1)基本语法
basename [string / pathname] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
basename 可以理解为取路径里的文件名称
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
2)案例实操
截取该/home/atguigu/banzhang.txt 路径的文件名称
[niujifei@njf ~]$ basename /home/abc/banzhang.txt
banzhang.txt
[niujifei@njf ~]$ basename /home/abc/banzhang.txt .txt
banzhang
dirname
1)基本语法
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名
(非目录的部分),然后返回剩下的路径(目录的部分))
dirname 可以理解为取文件路径的绝对路径名称,返回完整路径最后 / 的前面的部分,常用于返回路径部分
2)案例实操
获取 banzhang.txt 文件的路径。
[niujifei@njf ~]$ dirname /home/abc/banzhang.txt
/home/abc
2、自定义函数
1)基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]
2)应用实例:计算输入两个参数的和(read), getSum
#!/bin/bash
function sum()
{
S=0
S=$[$1+$2]
echo "$S"
}
read -p "Please input the number1: " n1;
read -p "Please input the number2: " n2;
sum $n1 $n2;
3)经验技巧
必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一 样先编译。
函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将 以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)
二、read 读取控制台输入
1、基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
参数
变量:指定读取值的变量名
2、应用实例
案例1:读取控制台输入一个 num 值
案例2:读取控制台输入一个 num 值,在 10 秒内输入
[niujifei@njf ~]$ cat read.sh
#!/bin/bash
#案例1:读取控制台输入一个 num 值
read -p "请输入一个数num1=" NUM1
echo "您输入的值是num1=$NUM1"
#案例2:读取控制台输入一个 num 值,在10秒内输入
read -t 10 -p "请在10秒内输入一个数num2=" NUM2
echo "您输入的值数num2=$NUM2"
[niujifei@njf ~]$ ./read.sh
请输入一个数num1=1
您输入的值是num1=1
请在10秒内输入一个数num2=2
您输入的值数num2=2
[niujifei@njf ~]$ ./read.sh
请输入一个数num1=10
您输入的值是num1=10
请在10秒内输入一个数num2=您输入的值数num2=