1:bash函数的定义格式
[ function ] funname [()]
{
action;
[return int;]
}
说明:
1:可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2:函数返回值,可以带有return来返回;如果没有,则用函数体最后一行的执行结果,作为返回值。return后跟0-255数值。在调用函数后,通过$?来获得返回值;
3:参数传递,调用函数时,可以往里面传递参数,$n($1,$2...)获取参数值。
2:实战练习设计一个函数,实现加法运算。
#!/bin/bash
funWithReturn(){
echo "a+b=?"
echo -n "a="
read a
echo -n "b="
read b
echo -n "$a+$b="
return $(($a+$b))
}
#函数调用
funWithReturn
#获取函数执行结果返回值
echo "$?"
脚本执行:
[craft@vp143 shell]$ bash add.sh
a+b=?
a=3
b=4
3+4=7
注:这里实现两个变量的加法,实现方式:$(($a+$b)),$[a+b],`expr $a + $b`,或者$(expr $a + $b)
3.bash编程回顾
特殊的变量:
$0:脚本名字。此变量包含地址,可以使用basename
$0获得脚本名称。
$1:第一个参数
$2,$3,$4,$5,...一次类推。
$# 传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数,,以("$1 $2...")
$$ 脚本运行的ID号
$! 后台运行的最后一个进程的ID号
$@
与$*相同,但是使用时加引号,并在引号中返回每个参数。("$1""$2"...)
$- 显示shell使用的当前选项。
$?
显示最后命令的推出状况。0表示没有错误。
逻辑运算符
对应操作 整数 字符串
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt
<
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
文件操作逻辑运算符:
-d file ----当file是一个目录时,返回 True
-f file
----当file是一个普通文件时,返回 True
-r file ----当file是一个只读文件时,返回 True
-s file
----当file文件长度大于0时,返回 True
-w file ----当file是一个可写文件时,返回 True
-x "/bin/ls"
----当/bin/ls是一个可执行文件时,返回 True,目录是否可访问
-e file ----当file存在时,返回True
-o file
----当file文件的所有者是当前用户时,返回True
-z file ----当file长度为0时,返回True
-u -----文件的
UID 标志被设置
-G -----文件的组 ID 和当前用户相同
file1 -nt file2 -----文件 file1 比 file2
更新
file1 -ot file2 -----文件 file1 比 file2 更老
4:bash调试
在编程过程中难免会出错,有的时候,调试程序比编写程序花费的时间还要多,Shell程序同样如此。
Shell程序的调试主要是利用bash命令解释程序的选择项。
调用bash的形式是:
bash
-选择项Shell程序文件名几个常用的选择项是:
-e 如果一个命令失败就立即退出。
-n 读入命令但是不执行它们。
-u
置换时把未设置的变量看做出错。
-v 当读入Shell输入行时把它们显示出来。
-x 执行命令时把命令和它们的参数显示出来。