जवाबों:
मेरा मानना है कि आपको टेम्परेरी वैरिएबल (या फंक्शन) की जरूरत है। यदि $TEST
मौजूद नहीं है, तो इसका विस्तार कुछ भी नहीं है, और $test_or
केवल इसमें शामिल है 1
। ऐसा करने का वास्तविक तरीका अच्छा होगा, लेकिन वर्तमान में वाक्यविन्यास मुद्दा है, और ऐसा नहीं लगता कि यह वास्तव में अधिकांश उद्देश्यों के लिए आवश्यक है।
set test_or $TEST 1
echo $test_or[1]
इसके अलावा, यदि आप चाहते हैं कि $TEST
अगर यह पहले से मौजूद नहीं है, तो आप संशोधित कर सकते हैं set -q
।
set -q TEST; or set TEST 1
echo $TEST
एक चर का संदर्भ देने और एक डिफ़ॉल्ट मान प्रदान करने के लिए आप एक सशर्त युक्त कमांड प्रतिस्थापन का उपयोग कर सकते हैं जो echo
दोनों शाखाओं पर करता है ।
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
a default value
> set someVar 42
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
42
चूंकि यह एक प्रकार की क्रिया है, इसलिए आप भिन्न होने पर एक अलग लाइन पर वैरिएबल को इनिशियलाइज़ कर सकते हैं।
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
यदि आप वास्तव में डिफ़ॉल्ट इन-लाइन को स्थानापन्न करने की क्षमता चाहते हैं, तो आप इसे अप्रत्यक्ष रूप से उपयोग करके किसी फ़ंक्शन में कर सकते हैं, और फिर उस फ़ंक्शन को कॉल कर सकते हैं।
> function orDefault
set -q $argv[1]; and echo $$argv[1]; or echo $argv[2]
end
>
> echo $moreVar
> echo (orDefault moreVar 'a default value')
a default value
> set moreVar 42
> echo (orDefault moreVar 'a default value')
42