Hoe roep ik een shellscript op vanuit een ander shellscript?

Ik heb twee shell scripts, a.sh en b.sh.

Hoe kan ik b.sh aanroepen vanuit het shell script a.sh?

Er zijn een paar verschillende manieren waarop je dit kunt doen:

  1. Maak het andere script uitvoerbaar, voeg de #!/bin/bash regel bovenaan toe, en het pad waar het bestand staat aan de $PATH omgevingsvariabele. Dan kun je het als een normaal commando aanroepen;

  2. Of roep het aan met het source commando (alias is .) zoals dit: source /path/to/script;

  3. Of gebruik het bash commando om het uit te voeren: /bin/bash /path/to/script;

De eerste en derde methode voeren het script uit als een ander proces, dus variabelen en functies in het andere script zullen niet toegankelijk zijn.
De tweede methode voert het script uit in het proces van het eerste script, en haalt variabelen en functies van het andere script binnen zodat ze bruikbaar zijn vanuit het aanroepende script.

In de tweede methode, als je exit gebruikt in het tweede script, zal het het eerste script ook afsluiten. Wat niet zal gebeuren in de eerste en derde methode.

Commentaren (12)

Kijk hier eens naar.

#!/bin/bash
echo "This script is about to run another script."
sh ./script.sh
echo "This script has just run another script."
Commentaren (4)
pathToShell="/home/praveen/"   
chmod a+x $pathToShell"myShell.sh"
sh $pathToShell"myShell.sh"
Commentaren (0)