1、函数
对于shell脚本来说,用户是可以自己定义自己需要的函数的,用于处理部分功能,函数定义格式如下:
fun(){
action;
return xxx;
}
对于函数返回值来说,可以写return语句也可以不写,如果不写,则默认返回最后一条语句的执行结果。函数返回值在调用该函数后通过 $? 来获得。例如:
#!/bin/bash
fun(){
echo "输入第一个数";
read num1;
echo "输入第二个数";
read num2;
return $(($num1+$num2))
}
fun
echo "两数和为:$?"
read -n 1 # 确保运行完不进行退出
结果为:
输入第一个数
2
输入第二个数
3
两数和为:5
1.1、传递参数
对于函数来说,传入参数这个功能是必不可少的,如果一个语言可以定义函数,但不能传入参数,那确实有点鸡肋了。shell脚本可以传入参数,在调用函数时将需要的参数传进去即可。函数内部获取时只需要通过 $n 的形式来获取,n表示参数的位置。例如:
#!/bin/bash
fun(){
echo "第一个数${1}";
echo "第三个数${3}";
}
fun 1 2 5
read -n 1 # 确保运行完不进行退出
结果:
第一个数1
第三个数5
另外,还有几个特殊字符用来处理参数:
参数处理 | 说明 |
---|---|
$# | 传递到脚本或函数的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
2、Shell 输入/输出重定向
此部分内容较为简单
命令 | 说明 |
---|---|
data > file | 将输出重定向到 file。 |
data< file | 将输入重定向到 file。 |
data>> file | 将输出以追加的方式重定向到 file。 |
a > file | 将文件描述符为 a 的文件重定向到 file。 |
a >> file | 将文件描述符为 a 的文件以追加的方式重定向到 file。 |
a >& m | 将输出文件 m 和 a 合并。 |
a <& m | 将输入文件 m 和 a 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
/dev/null 文件
对于部分命令,我们只希望运行该命令,但不希望显示输出的结果,那我们可以将输出重定向到/dev/null 文件,该文件是个空文件,所有输出到这个文件的数据皆被丢弃。
比较常用的命令是:
$ command > /dev/null 2>&1
表示将输出重定向至/dev/null 文件中,标准错误输出指定到标准输出中
注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
3.文件包含
文件包含格式:
. file # 点号(.)和文件名中间有一空格 或 source file