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 执行命令时把命令和它们的参数显示出来。