संभव डुप्लिकेट:
Ternary operator (?:) in Bashक्या कोई इनलाइन है - यदि बैश में असाइनमेंट (टर्नरी सशर्त) के साथ?
यदि यह AS3 या जावा थे, मैं निम्नलिखित करना होगा:
fileName = dirName + "/" + (useDefault ? defaultName : customName) + ".txt";
लेकिन खोल में, कि बेकार में जटिल लगता है, की आवश्यकता होती है कोड की कई पंक्तियां, साथ ही साथ दोहराए गए कोड का थोड़ा सा।
if [ $useDefault ]; then
fileName="$dirName/$defaultName.txt"
else
fileName="$dirName/$customName.txt"
fi
आप सभी को एक पंक्ति में संपीड़ित कर सकते हैं, लेकिन यह स्पष्ट रूप से बलिदान देता है।
क्या शेल में परिवर्तनीय असाइनमेंट के साथ इनलाइन if
लिखने का कोई बेहतर तरीका है?
विलियम पर्ससेल का जवाब मेरा से कम प्रत्यक्ष है, लेकिन अगर धारणा '$ useDefault' का मानना है कि डिफ़ॉल्ट नाम का उपयोग करना है या नहीं, तो यह एक क्लीनर समाधान हो सकता है। –
मैंने सबकुछ ठीक से उद्धृत करने के लिए अपना उत्तर अपडेट कर दिया है। –