I have two shell scripts, a.sh
and b.sh
.
How can I call b.sh
from within the shell script a.sh
?
$() – the command substitution. ${} – the parameter substitution/variable expansion.
$0 is the name of the script itself (script.sh) $1 is the first argument (filename1) $2 is the second argument (dir1)
There are a couple of different ways you can do this:
Make the other script executable, add the #!/bin/bash
line at the top, and the path where the file is to the $PATH environment variable. Then you can call it as a normal command;
Or call it with the source
command (alias is .
), like this:
source /path/to/script
Or use the bash
command to execute it, like:
/bin/bash /path/to/script
The first and third approaches execute the script as another process, so variables and functions in the other script will not be accessible.
The second approach executes the script in the first script's process, and pulls in variables and functions from the other script (so they are usable from the calling script).
In the second method, if you are using exit
in second script, it will exit the first script as well. Which will not happen in first and third methods.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With