पर असाइन करना मैं बैश में स्थितित्मक पैरामीटर के लिए मान कैसे निर्दिष्ट कर सकता हूं? मैं एक डिफ़ॉल्ट पैरामीटर के लिए एक मान असाइन करना चाहता हूं:एक स्थितित्मक पैरामीटर
if [ -z "$4" ]; then
4=$3
fi
इंगित करना कि 4 कमांड नहीं है।
पर असाइन करना मैं बैश में स्थितित्मक पैरामीटर के लिए मान कैसे निर्दिष्ट कर सकता हूं? मैं एक डिफ़ॉल्ट पैरामीटर के लिए एक मान असाइन करना चाहता हूं:एक स्थितित्मक पैरामीटर
if [ -z "$4" ]; then
4=$3
fi
इंगित करना कि 4 कमांड नहीं है।
set
निर्मित स्थितीय मापदंडों
$ set -- this is a test
$ echo $1
this
$ echo $4
test
जहां --
चीजें हैं जो विकल्प (जैसे -x
) की तरह लग रही के विरुद्ध सुरक्षा स्थापित करने के लिए एक ही रास्ता है।
अपने मामले में आप चाहते हो सकता है:
if [ -z "$4" ]; then
set -- "$1" "$2" "$3" "$3"
fi
लेकिन यह शायद
if [ -z "$4" ]; then
# default the fourth option if it is null
fourth="$3"
set -- "$1" "$2" "$3" "$fourth"
fi
आप भी पैरामीटर पर देखने -z
के लिए $#
बजाय परीक्षण गिनती करने के लिए चाहते हो सकता है के रूप में और अधिक स्पष्ट हो जाएगा।
आप एक चौथा पैरामीटर के साथ फिर से अपनी स्क्रिप्ट को फोन करके आप क्या चाहते हैं कर सकते हैं:
if [ -z "$4" ]; then
$0 "$1" "$2" "$3" "$3"
exit $?
fi
echo $4
./script.sh one two three
इच्छा उत्पादन की तरह स्क्रिप्ट ऊपर कॉलिंग:
तीन
'./ यदि $ PATH के माध्यम से स्क्रिप्ट का उपयोग किया जाता है तो $ 0' काम नहीं करेगा, '$ 0'' ठीक से होना चाहिए जो '/ script' और'/usr/local/bin/script' आदि के लिए काम करेगा। – msw