में एक शेल स्क्रिप्ट फ़ाइल को सोर्स किया गया है या नहीं, मैं यह निर्धारित करना चाहता हूं कि स्क्रिप्ट फ़ाइल निष्पादित या सोर्स की गई है या नहीं।बैश
उदाहरण के लिए,
# Shell script filename build.sh
if [ "x$0" = "xbash" ]; then
echo "I am sourced by Bash"
else
echo "I am executed by Bash"
fi
अगर मैं
source build.sh
टाइप किया यह उत्पादन मैं बैश द्वारा sourced रहा होगा।
अगर मैं
./build.sh
टाइप किया यह उत्पादन मैं बैश द्वारा क्रियान्वित कर रहा हूँ जाएगा।
वर्तमान में, मैं ऐसा करने के लिए $ 0 का उपयोग करता हूं। क्या कोई बेहतर विचार है?
#!/bin/bash
if [ "x$(awk -F/ '{print $NF}' <<< $0)" = 'xcdruntime' ]; then
echo Try to source me, not execute me.
else
cd /opt/www/app/pepsi/protected/runtime
fi
आपका समाधान काम नहीं करता है, क्योंकि आप 'bash build.sh' के माध्यम से एक स्क्रिप्ट चला सकते हैं। यह भी ध्यान रखें कि एक स्क्रिप्ट स्वयं स्रोत हो सकती है - यह थोड़ी बेवकूफ है, लेकिन संभव है। – user123444555621
@ Pumbaa80 eh ... मैंने 'bash build.sh' का प्रयास किया है मेरा समाधान अभी भी काम करता है – hellojinjie
आह ठीक है, इसे भूल जाओ;) – user123444555621