-
定义函数
function fname() #关键字 function 可省略 { #函数内容 }
-
调用函数
#只需要使用函数名就可以调用某个函数 fname ;
-
传递参数
fname arg1 arg2
在函数中访问函数参数的方法:
#!/bin/bash echo $0 echo $1, $2 #访问参数1和参数2 echo $@ #以列表的方式一次性打印所有参数 echo $* #类似于$@,但是参数被作为单个实体 echo ---------------------- fname() { echo $1, $2 #访问参数1和参数2 echo $@ #以列表的方式一次性打印所有参数 echo $* #类似于$@,但是参数被作为单个实体 return 0 #返回值 } fname 1 2 3
类似地,参数也可以传递给脚本,并通过
$0
(脚本名)访问-
$1
第一个参数 -
$2
第二个参数 -
$n
第n个参数 -
$@
被扩展成$1 $2 $3
等 -
$*
被扩展成$1c$2c$3
,其中 c 是 IFS 的第一个字符。 -
$@
要比$*
用得多。由于$*
将所有的参数当作单个字符串,因此它很少被使用。
-
-
递归函数
fname() { echo $1 sleep 1 fname $1 #调用自身 } fname hello
Fork 炸弹
:(){ :|:& };:
-
导出函数
函数也能用 export 导出,导出后函数的作用域就可以以扩展到子进程中:
export -f fname
-
读取命令返回值(状态)
cmd #执行了一条命令 echo $? #打印上一条命令的返回值(返回值也被称为“退出状态”)。成功为 0,否则为非0
-
向命令传递参数
command [-pv] [-k N] filename
上面这条命令有如下几种执行方式:
$ command -p -v -k 1 file
$ command -pv -k 1 file
$ command -vpk 1 file
$ command file -pvk 1
网友评论