Bash Script Calls another bash script and waits for it to complete before proceeding


Question

I have 1 bash script that runs another bash script, however the first bashscript isn't waiting for the second one to complete before proceeding, how can I force it to wait?

For example:

#!/bin/bash
# first.sh

#call to secondary script
sh second.sh
echo "second.sh has completed"

echo "continuing with the rest of first.sh..."

The way it is now, it will run second.sh, and continue on, without waiting for second.sh to complete.

1
25
2/16/2010 1:24:47 AM

Accepted Answer

Normally it does; something else is happening. Are you sure that the other script isn't running something in the background instead? You can try using wait regardless.

14
2/16/2010 1:27:06 AM

AS I use scheme like this in few scripts - just calling second scripts in the same shell-copy using source.

In script-1:

source script2.sh

or:

. script2.sh

So - no one command in script-1 will not be proceeded till script2.sh will end all it's tasks.

Little example.

First script:

$ cat script-1.sh
#!/bin/bash
echo "I'm sccript $0."
echo "Runnig script-2..."

source script-2.sh

echo "script-2.sh finished!"

Second script:

$ cat script-2.sh
#bin/bash
echo "I'm script-2. Running wait operation..."
sleep 2
echo "I'm ended my task."

How it works:

$ ./script-1.sh
I'm sccript ./script-1.sh.
Runnig script-2...
I'm script-2. Running wait operation...
I'm ended my task.
script-2.sh finished!

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon