avirup avirup - 7 months ago 6
Bash Question

Can I call a function of a shell script from another shell script?

I have 2 shell scripts.

The second shell script contains following functions
second.sh

func1
func2


The first.sh will call the second shell script with some parameters and
will call func1 and func2 with some other parameters specific to that function.

Here is the example of what I am talking about

second.sh

val1=`echo $1`
val2=`echo $2`

function func1 {

fun=`echo $1`
book=`echo $2`

}

function func2 {

fun2=`echo $1`
book2=`echo $2`


}


first.sh

second.sh cricket football

func1 love horror
func2 ball mystery


How can I achieve it?

Answer

Refactor your second.sh script like this:

function func1 {
   fun=$1
   book=$2
   printf "fun=%s,book=%s\n" "${fun}" "${book}"
}

function func2 {
   fun2=$1
   book2=$2
   printf "fun2=%s,book2=%s\n" "${fun2}" "${book2}"
}

And then call these functions from script first.sh like this:

source ./second.sh
func1 love horror
func2 ball mystery

OUTPUT:

fun=love,book=horror
fun2=ball,book2=mystery