函数, 是一个子 shell, 代码段, 定义完函数后可以引用它.
函数就是把一段代码整理到了一个小单元中, 并给这个小单元起一个名字, 当用到这段代码时直接调用这个小单元的名字即可.
- functin f_name(){
- command
- }
函数必须要放在最前面
示例 1
1 编写脚本
- #!/bin/bash
- function inp() {
- echo $1 $2 $3 $0 $#
- }
- input 1 a 2
解释:
#!/bin/bash
function inp() { inp 是参数的名字
- echo $1 $2 $3 $0 $# $1 第一个参数,$2 第二个参数,$3 第三个参数,$0 文件的名字,$# 统计参数
- }
inp 1 a 2 输入函数名称 inp 直接调用函数, 输出结果是 $1=a $2=a $3=2
2 执行输出
[root@AliKvn shell]# sh fun1.sh
1 a 2 fun1.sh 3
- [root@AliKvn shell]# sh -x fun1.sh
- + inp 1 a 2
- + echo 1 a 2 fun1.sh 3
1 a 2 fun1.sh 3
编写第二种脚本
- [root@AliKvn shell]# vim fun1.sh
- #!/bin/bash
- function inp() {
- echo "1 $1"
- echo "a $2"
- echo "2 $3"
- echo "fun1.sh $0"
- echo "5 $#"
- }
- inp 1 a 2 3 adf
以上脚本, 正确的输出结果应该是与 echo 里面除了 $ 参数之外的参数对应, 就是说 正常的话 应该输出是对应的.
执行过程
- [root@AliKvn shell]# sh fun1.sh
- 1 1
- a a
- 2 2
fun1.sh fun1.sh
5 5
另一种方法, 输出 $1
- [root@AliKvn shell]# vim fun2.sh
- #!/bin/bash
- function inp() {
- echo "1 $1"
- echo "a $2"
- echo "2 $3"
- echo "fun1.sh $0"
- echo "5 $#"
- }
- inp $1 $2 $3
输出变量
- [root@AliKvn shell]# sh -x fun2.sh 1
- + inp 1
- + echo '1 1'
- 1 1
- + echo 'a'
- a
- + echo '2'
- 2
- + echo 'fun1.sh fun2.sh'
fun1.sh fun2.sh
- + echo '5 1'
- 5 1
- [root@AliKvn shell]# sh -x fun2.sh 1 2
- + inp 1 2
- + echo '1 1'
- 1 1
- + echo 'a 2'
- a 2
- + echo '2'
- 2
- + echo 'fun1.sh fun2.sh'
fun1.sh fun2.sh
- + echo '5 2'
- 5 2
- [root@AliKvn shell]# sh -x fun2.sh 1 2 3
- + inp 1 2 3
- + echo '1 1'
- 1 1
- + echo 'a 2'
- a 2
- + echo '2 3'
- 2 3
- + echo 'fun1.sh fun2.sh'
fun1.sh fun2.sh
- + echo '5 3'
- 5 3
- 20.16
来源: http://www.bubuko.com/infodetail-2626708.html