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?
#!/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.
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
AS I use scheme like this in few scripts - just calling second scripts in the same shell-copy using
So - no one command in
script-1 will not be proceeded till
script2.sh will end all it's tasks.
$ cat script-1.sh #!/bin/bash echo "I'm sccript $0." echo "Runnig script-2..." source script-2.sh echo "script-2.sh finished!"
$ 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!