6. 函数
function_name() {
statements
}
注意:
必须在调用一个函数之前先对它进行定义,不存在前向声明;
当一个函数被调用时,脚本程序的位置参数($*,$@,$#,$1,$2等)会被替换为函数的参数。这也是读取传递给函数的参数的办法。当函数执行完毕后,这些参数会恢复为它们先前的值。
可以通过return命令让函数返回数字值(注意,return不能返回字符串值)。为让一个函数返回字符串,可以echo一个字符串并捕获其结果(因为子进程会继承父进程的标准输出,因此,子进程的输出也就直接反应到父进程)
如果在函数里没有使用return命令指定一个返回值,函数返回的就是执行的最后一条命令的退出码
#!/bin/sh foo(){ echo "Hello" } result="$(foo)" echo $result exit 0
#!/bin/sh yes_or_no(){ echo "Is your name $* ?" while true do echo -n "Enter yes or no: " read x case "$x" in y | yes ) return 0;; n | no ) return 1;; * ) echo "Answer yes or no" esac done } echo "Original parameters are $*" if yes_or_no "$1" #将$1传递给yes_or_no then echo "Hi $1, nice name" else echo "Newer mind" fi echo