shell编程高级1

一、Shell函数
1、语法格式
(1)简单语法
fun_name(){

指令。。。

return n

}

(2)规范语法
function fun_name(){

指令。。。

return n

}

2、函数的执行
(1)方法一:直接执行函数名
a、格式

fun_name

b、注意事项

(i)不要带小括号。

(ii)函数定义和函数体必须在要执行的函数名的前面,因为shell的执行是从上向下执行的。

(2)方法二:带参数执行
a、格式

fun_name 参数1 参数2 。。。

b、注意事项

(i)在函数体中可以使用位置参数($1, 2.. 2.. n,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,*, ? , ?, @)做为函数的参数。

(ii)父脚本的参数则临时被函数的参数所掩盖或变隐藏。

(iii)位置参数$0比较特殊,仍然表示父脚本的名称。

(iv)当函数执行完成后,原来的命令行参数会恢复。

(v)return的功能和工作方式与shell中的exit相同,用于跳出函数。

(vi)return会返回一个退出给调用的程序。

(vii)在函数体中使用exit会跳出shell,终止整个shell脚本。

3、示例
(1)示例1:基本调用的注意事项
a、只定义函数,不调用,则无结果。

vi /services/scripts/myFun01.sh

#!/bin/sh

myFun01(){

echo "I amLinux"

}

sh /services/scripts/myFun01.sh

#<–结果为空,没有任何输出

b、函数调用在前,定义在后,则报错commandnot found。

vi /services/scripts/myFun01.sh

#!/bin/sh

myFun01

myFun01(){

echo "I amLinux"

}

sh /services/scripts/myFun01.sh

myFun01.sh: line 2: myFun01: command not found

c、调用函数加小括号,则报错syntaxerror: unexpected end of file。

vi /services/scripts/myFun01.sh

#!/bin/sh

myFun01(){

echo "I amLinux"

}

myFun01()

sh /services/scripts/myFun01.sh

myFun01.sh: line 6: syntax error: unexpected end of file

d、正确调用。

vi /services/scripts/myFun01.sh

#!/bin/sh

myFun01(){

echo "I amLinux"

}

myFun01

sh /services/scripts/myFun01.sh

I am Linux

(2)示例2:函数定义和函数执行分离于不同脚本
vi /services/scripts/fun_defined.sh

#!/bin/sh

myFun01(){

echo "I ammyFun01"

}

myFun02(){

echo "I ammyFun02"

}

vi /services/scripts/fun_exec.sh

#!/bin/sh

[ -f fun_defined.sh ] && . ./fun_defined.sh || exit 1

myFun01

myFun02

sh fun_exec.sh

I am myFun01

I am myFun02

(3)示例3:函数传参
vi /services/scripts/myFun03.sh

#!/bin/sh

myFun03(){

echo "I am Linux。You are $1"

}

myFun03 abc

sh /services/scripts/myFun03.sh

猜你喜欢

转载自blog.csdn.net/weixin_44894262/article/details/90144460
今日推荐