एक बैश फ़ंक्शन सीधे एक स्ट्रिंग वापस नहीं कर सकता जैसे आप इसे चाहते हैं। आप तीन काम कर सकते हैं:
- एक स्ट्रिंग गूंज
- बाहर निकलने की स्थिति लौटाएं, जो एक संख्या है, न कि एक स्ट्रिंग
- एक चर साझा करें
यह कुछ अन्य गोले के लिए भी सही है।
यहाँ उन विकल्पों में से प्रत्येक को कैसे करना है:
1. प्रतिध्वनि
lockdir="somedir"
testlock(){
retval=""
if mkdir "$lockdir"
then # Directory did not exist, but it was created successfully
echo >&2 "successfully acquired lock: $lockdir"
retval="true"
else
echo >&2 "cannot acquire lock, giving up on $lockdir"
retval="false"
fi
echo "$retval"
}
retval=$( testlock )
if [ "$retval" == "true" ]
then
echo "directory not created"
else
echo "directory already created"
fi
2. वापसी की स्थिति
lockdir="somedir"
testlock(){
if mkdir "$lockdir"
then # Directory did not exist, but was created successfully
echo >&2 "successfully acquired lock: $lockdir"
retval=0
else
echo >&2 "cannot acquire lock, giving up on $lockdir"
retval=1
fi
return "$retval"
}
testlock
retval=$?
if [ "$retval" == 0 ]
then
echo "directory not created"
else
echo "directory already created"
fi
3. शेयर चर
lockdir="somedir"
retval=-1
testlock(){
if mkdir "$lockdir"
then # Directory did not exist, but it was created successfully
echo >&2 "successfully acquired lock: $lockdir"
retval=0
else
echo >&2 "cannot acquire lock, giving up on $lockdir"
retval=1
fi
}
testlock
if [ "$retval" == 0 ]
then
echo "directory not created"
else
echo "directory already created"
fi