壁立千仞 无欲则刚
函数就是一个缩小版的脚本
脚本就是复杂化的函数
系统函数就是linux的Shell中提供直接就可以执行的轻量级脚本
把命令执行后的标准输出放入变量中
1)基本语法
新式写法:变量名称=$(命令) #强烈建议采用新式的写法
旧式写法:变量名称=`命令`
2)案例实操
[root@centos7-101 scripts]# A=$(date +%s)
[root@centos7-101 scripts]# echo $A
1669884983
1)基本语法
basename [string / pathname] [suffix]
(功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
basename 可以理解为取路径里的文件名称
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
2)案例实操
截取该 add.sh .sh 路径的文件名称。
[root@centos7-101 scripts]# basename /root/scripts/add.sh .sh
add
[root@centos7-101 scripts]# basename /root/scripts/while.sh .sh
while
1)基本语法
dirname 文件绝对路径
(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
dirname 可以理解为取文件路径的绝对路径名称,只是对当前字符串做切割。
2)案例实操
获取 while.sh 文件的路径。
[root@centos7-101 scripts]# dirname /root/scripts/while.sh
/root/scripts
获取 while.sh 文件的路径。
解决相对路径进入无法获取问题
[root@centos7-101 scripts]# touch dirname.sh
[root@centos7-101 scripts]# vim dirname.sh
#!/bin/bash
echo '==========dirname========='
cd $(dirname $0)
echo "脚本文件的绝对路径:$(pwd)"
[root@centos7-101 scripts]# chmod u+x dirname.sh
[root@centos7-101 scripts]# ./dirname.sh
==========dirname=========
脚本文件的绝对路径:/root/scripts
1)基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
2)经验技巧
(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)
3)案例实操
计算两个输入参数的和。
[root@centos7-101 scripts]# touch fun.sh
[root@centos7-101 scripts]# vim fun.sh
#!/bin/bash
function add(){
sum=$[ $1 + $2 ]
echo "$sum"
}
read -p "请输入第一个参数" n1
read -p "请输入第二个参数" n2
number=$(add $n1 $n2)
echo "和为:" $number
echo "平方:" $[ $number * $number ]
[root@centos7-101 scripts]# chmod u+x fun.sh
[root@centos7-101 scripts]# ./fun.sh
请输入第一个参数1
请输入第二个参数2
和为: 3
平方: 9