不同shell文件中的函数调用

first.sh文件中新建函数funcFirst

#!/bin/bash echo $0 #上一行的感叹号要使用英文字符
funcFirst(){ echo "I am funcFirst()"
echo "function:$FUNCNAME in lineNumber: $LINENO lineNumber2:${BASH_LINENO[1]} Brother: ${FUNCNAME[1]}"
}

second.sh文件中调用first.sh中的funcFirst()函数

first.sh导入second.sh方法(.first.shsourcefirst.sh../first.sh)

#!/bin/bash
#sh first.sh #不能导入文件
#. first.sh
#source first.sh
. ./first.sh
funcFirst
funcSecond(){
funcFirst
} funcSecond

执行结果

hyc@hyc-csu:~/shellCommands$bash second.sh
second.sh
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:0 Brother:main
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:12 Brother:funcSecond
hyc@hyc-csu:~/shellCommands$sh second.sh【备注:ubuntu中默认dash
second.sh
I am funcFirst()
second.sh:5: second.sh: Bad substitution
hyc@hyc-csu:~/shellCommands$.second.sh
bash
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:617 Brother:source
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:12 Brother:funcSecond
 hyc@hyc-csu:~/shellCommands$./second.sh【备注:需要给second.sh加执行权限chmod+x second.sh
./second.sh
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:0 Brother: main
I am funcFirst()
function:funcFirst in lineNumber: 5 lineNumber2:10 Brother: funcSecond

结论

1.在一个shell文件中,调用另一个shell文件的函数,导入的方法有:(.filename)(sourcefilename)(shfilename测试不能通过)

2.区分source(等价.)sh/bash ./执行shell

3.区分shell内置变量$LINENO,$FUNCNAME($FUNCNAME表示函数本身,$FUNCNAME[1]表示调用$FUNCNAME的函数),$BASH_LINENO






你可能感兴趣的:(不同shell文件中的函数调用)