शीर्ष उत्तर #!/bin/bash
उप-स्क्रिप्ट की पहली पंक्ति में लाइन जोड़ने का सुझाव देता है । लेकिन भले ही आप शेबंग जोड़ते हैं, एक उप-शेल में स्क्रिप्ट चलाने और आउटपुट कैप्चर करने के लिए यह बहुत तेज़ है * :
$(source SCRIPT_NAME)
यह तब काम करता है जब आप एक ही दुभाषिया (जैसे बैश से दूसरी बैश स्क्रिप्ट) को चलाते रहना चाहते हैं और यह सुनिश्चित करते हैं कि सब-स्क्रिप्ट की शेलबैंग लाइन निष्पादित नहीं होती है।
उदाहरण के लिए:
#!/bin/bash
SUB_SCRIPT=$(mktemp)
echo "#!/bin/bash" > $SUB_SCRIPT
echo 'echo $1' >> $SUB_SCRIPT
chmod +x $SUB_SCRIPT
if [[ $1 == "--source" ]]; then
for X in $(seq 100); do
MODE=$(source $SUB_SCRIPT "source on")
done
else
for X in $(seq 100); do
MODE=$($SUB_SCRIPT "source off")
done
fi
echo $MODE
rm $SUB_SCRIPT
आउटपुट:
~ ❯❯❯ time ./test.sh
source off
./test.sh 0.15s user 0.16s system 87% cpu 0.360 total
~ ❯❯❯ time ./test.sh --source
source on
./test.sh --source 0.05s user 0.06s system 95% cpu 0.114 total
* उदाहरण के लिए जब वायरस या सुरक्षा उपकरण किसी उपकरण पर चल रहे हों तो नई प्रक्रिया को क्रियान्वित करने में अतिरिक्त 100ms लग सकते हैं।