Bash shell的函数(方法)定义
原创
©著作权归作者所有:来自51CTO博客作者WongKyunban的原创作品,请联系作者获取转载授权,否则将追究法律责任
function funName[()] compound-command [ redirections]
为了更简洁地说明,我以一个例子来说明我想分享的内容:
- #!/usr/bin/env bash :这一行是指明用bash脚本解释器解释脚本
#!/usr/bin/env bash
# function关键字是可选的。如果省略,方法名后一定要加上小括号。
mylog() {
printf "$1 : $2"
}
# 调用方法就像调用shell的普通命令一样。
mylog "TAG" "this is a demo!\n"
#小括号是可以省略
function myCommand {
myvar= echo 'See you again world 9999'| tr 9 8
printf -v myvar
}
myCommand
#这是一个完整的例子
function command1(){
printf "Hello $1\n"
}
command1 $1
运行结果:
shelltest % bash hello.sh Tom
TAG : this is a demo!
See you again world 8888
printf: usage: printf [-v var] format [arguments]
Hello Tom
shell函数就是给一组命令一个名字,以备稍后调用执行。shell函数的function关键字是可选的,省略时,方法名的小括号不能省略,如果带上关键字,那么小括号是可省略的。shell的函数调用方法与调用shell命令一样,包括传参也是。
注意: 诸如$1这里获取参数的异同。虽然都是同一个,但是要搞清它们的具体传值。如:
mylog() {
printf "$1 : $2"
}
# 调用方法就像调用shell的普通命令一样。
mylog "TAG" "this is a demo!\n"
function command1(){
printf "Hello $1\n"
}
command1 $1
调用如下:
shelltest % bash hello.sh Tom
那么mylog方法中的$1 和 $2分别是"TAG" ,“this is a demo!\n”。但是下面这行代码:
它的$1指的是Tom这个值。所以要注意并理解好“shell的函数调用方法与调用shell命令一样,包括传参也是”这一句话。