0 结构化编程,不能独立运行,需要调用时执行,可以被多次调用,
调用函数:
直接使用函数名即可。
1 定义方式:
方式1: function FUNCNAME { command } 方式2: FUNCNAME() { command }
2 自定义函数返回值:
return #
返回值在0-255之间,只要return,函数必然会退出
和$?的区别:
$? 的返回值会看脚本中最后一样命令的执行结果,如果你定义一个函数,函数中各种报错,但是最后一行 echo 11,那么 echo $?返回的结果肯定为0。
而 return # 是自定义返回值。
3 案例:
eg1: #!/bin/bash # TWOSUM() { echo ${$1+$2} } SUM=`TWOSUM 1 2` 给函数传递参数并执行 echo $SUM eg2: #!/bin/bash # ADDUSER() { USERNAME=hadoop if !id -u $USERNAME &> /dev/null; then useradd $USERNAME echo $USERNAME | passwd --stdin $USERNAME &> /dev/null return 0 定义函数返回值 else return 1 fi } ADDUSER 调用此函数 if [$? -eq 0]; then 输出上一行执行的状态位 echo "add user finished" else echo "failuer" fi eg3: #!/bin/bash # ADDUSER() { USERNAME=$1 if !id -u $USERNAME &> /dev/null; then useradd $USERNAME echo $USERNAME | passwd --stdin $USERNAME &> /dev/null return 0 else return 1 fi } for I in {1..10}; do ADDUSER user$I if [$? -eq 0]; then echo "add user$I finished" else echo "add user$I failuer" fi done