दिलचस्प पोस्ट
कैसे NSString के substring प्राप्त करने के लिए? वेक्टर के बीच विकल्प: :: आकार () और वेक्टर :: आरक्षित () फ़ोकस पर और क्लिक पर ListView आइटम का रंग कैसे परिवर्तित करें (छवि) दृश्य अल्फा के लिए Android और सेटिंग अल्फा बहिष्कृत SMIL SVG एनीमेशन सीएसएस या वेब एनिमेशन प्रभाव (हॉवर, क्लिक करें) के साथ बदल दिया बग: एक दिनांक पिक्चर पर दिनांक चुनें जो कि फ्लोटिंग वीएसटीओ ऐड-इन से बाहर हो एफसीएम (फायरबेज क्लाउड मेसेजिंग) एकाधिक डिवाइसों को भेजें डैगर + रेट्रो गतिशील URL नेस्टेड एनजी-दोहरा में 2 $ इंडेक्स वैल्यू को पारित करना गठबंधन (आरबीआईडी) डेटा फ्रेम और मूल डेटा फ़्रेम के नाम के साथ कॉलम बनाएं Raw.github.com से जेएस सहित Arrays.asList () काम नहीं कर रहा है जैसा चाहिए? कैसे CoffeScript में तर्क के रूप में दो अज्ञात कार्यों को पारित करने के लिए? एसक्यूएल के साथ एक रिकॉर्ड के परिवर्तन के आधार पर कई रिकॉर्डों में परिवर्तन करना फ़ायरफ़ॉक्स पर कैशिंग बंद कैसे करें?

बार्श में टर्नरी ऑपरेटर (?)

क्या ऐसा कुछ करने का एक तरीका है?

int a = (b == 5) ? c : d; 

बाश का उपयोग कर?

Solutions Collecting From Web of "बार्श में टर्नरी ऑपरेटर (?)"

टर्नरी ऑपरेटर ? : ? : if/else का सिर्फ छोटा रूप if/else

 case "$b" in 5) a=$c ;; *) a=$d ;; esac 

या

  [[ $b = 5 ]] && a="$c" || a="$d" 

कोड:

 a=$([ "$b" == 5 ] && echo "$c" || echo "$d") 

यदि स्थिति केवल एक चर सेट की जाती है तो जांच कर रही है, यहां तक ​​कि एक छोटा रूप भी है:

 a=${VAR:-20} 

यदि VAR सेट किया गया है तो VAR के मूल्य को असाइन करेगा, अन्यथा यह इसे डिफ़ॉल्ट मान निर्दिष्ट करेगा 20 – यह एक अभिव्यक्ति का भी परिणाम हो सकता है

एलेक्स टिप्पणी में टिप्पणी के रूप में, इस दृष्टिकोण को तकनीकी रूप से "पैरामीटर विस्तार" कहा जाता है

 (( a = b==5 ? c : d )) # string + numeric 
 [ $b == 5 ] && { a=$c; true; } || a=$d 

यह बाद के भाग को निष्पादित करने से बचेगा || दुर्घटना से जब && और || के बीच का कोड विफल रहता है।

 if [ "$b" -eq 5 ]; then a="$c"; else a="$d"; fi 

cond && op1 || op2 अन्य उत्तरों में सुझाए गए cond && op1 || op2 अभिव्यक्ति में एक अंतर्निहित बग है: अगर op1 में एक op2 निकलता स्थिति है, तो op2 चुपचाप परिणाम बन जाता है; त्रुटि भी -e मोड में नहीं पकड़ी जाएगी।

कोट्स को नोट करें $b खाली या सफेद स्थान है, तो पहली जोड़ी एक वाक्यविन्यास त्रुटि को रोकेगा। अन्य एकल रिक्त स्थान में सभी श्वेत स्थान का अनुवाद रोकेंगे

चलो कमांड के लिए आवश्यक अधिकांश बुनियादी ऑपरेटरों का समर्थन होगा:

 let a=b==5?c:d; 

स्वाभाविक रूप से, यह केवल चर निर्दिष्ट करने के लिए काम करता है; यह अन्य कमांडों को निष्पादित नहीं कर सकता

यहां एक और विकल्प है जहां आपको केवल एक बार निर्दिष्ट करने वाले चर को निर्दिष्ट करना होगा, और इससे कोई फर्क नहीं पड़ता कि आपका असाइनिंग स्ट्रिंग या एक नंबर है या नहीं:

 VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B` 

सिर्फ एक विचार। 🙂

 (ping -c1 localhost&>/dev/null) && { echo "true"; } || { echo "false"; } 

मेरे उपयोग के मामलों के लिए निम्नलिखित कार्य लगता है:

उदाहरण

 $ tern 1 YES NO YES $ tern 0 YES NO NO $ tern 52 YES NO YES $ tern 52 YES NO 52 NO 

और इस तरह एक स्क्रिप्ट में इस्तेमाल किया जा सकता है:

 RESULT=$(tern 1 YES NO) echo "The result is $RESULT" 

टैन

 function show_help() { echo "" echo "usage: BOOLEAN VALUE_IF_TRUE VALUE_IF_FALSE {FALSE_VALUE}" echo "" echo "eg " echo "" echo "tern 1 YES NO => YES" echo "tern 0 YES NO => NO" echo "tern "" YES NO => NO" echo "tern "ANY STRING THAT ISNT 1" YES NO => NO" echo "ME=$(tern 0 YES NO) => ME contains NO" echo "" exit } if [ "$1" == "help" ] then show_help fi if [ -z "$3" ] then show_help fi # Set a default value for what is "false" -> 0 FALSE_VALUE=${4:-0} function main { if [ "$1" == "$FALSE_VALUE" ]; then echo $3 exit; fi; echo $2 } main "$1" "$2" "$3" 

यदि आप समान वाक्यविन्यास चाहते हैं तो आप इसका उपयोग कर सकते हैं

 a=$(( $((b==5)) ? c : d )) 

यहां कुछ विकल्प दिए गए हैं:

1- यदि एक पंक्ति में और फिर प्रयोग करें, तो यह संभव है।

 if [[ "$2" == "raiz" ]] || [[ "$2" == '.' ]]; then pasta=''; else pasta="$2"; fi 

2- इस तरह एक फ़ंक्शन लिखें:

  # Once upon a time, there was an 'iif' function in MS VB ... function iif(){ # Echoes $2 if 1,banana,true,etc and $3 if false,null,0,'' case $1 in ''|false|FALSE|null|NULL|0) echo $3;;*) echo $2;;esac } 

इस तरह स्क्रिप्ट के अंदर का उपयोग करें

 result=`iif "$expr" 'yes' 'no'` # or even interpolating: result=`iif "$expr" "positive" "negative, because $1 is not true"` 

3- मामले के जवाब में प्रेरित, एक अधिक लचीला और एक लाइन का उपयोग है:

  case "$expr" in ''|false|FALSE|null|NULL|0) echo "no...$expr";;*) echo "yep $expr";;esac # Expression can be something like: expr=`expr "$var1" '>' "$var2"`