भावों के सशक्त स्ट्रिंग संयोजन


1

जैसा कि इस उदाहरण में दिखाया गया है, मैं एक टर्नरी अभिव्यक्ति का उपयोग कर रहा हूं:

$a = 1
$x = if ($a -eq 1) { "one" } else {"not one" }
$t = "The answer is: " + $x
write-host $t

यह मेरी अपेक्षा के अनुरूप काम करता है। हालाँकि, मैं अपनी वास्तविक स्थिति में क्या करना चाहता हूँ, यह कि मैं ऐसा कर सकता हूँ, जैसे कि $tअभिव्यक्ति को असाइन करने के पहले मध्यवर्ती चरण के बिना सीधे असाइन $xकरना है:

$a = 1
$t = "The answer is: " + (if ($a -eq 1) { "one" } else {"not one" })
write-host $t

हालाँकि, मुझे असाइनमेंट लाइन पर एक त्रुटि मिलती है,

if : The term 'if' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:31
+     $t = "The answer is: " + (if ($a -eq 1) { "one" } else {"not one" ...
+                               ~~
    + CategoryInfo          : ObjectNotFound: (if:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

(मैंने (...)कोष्ठक के बिना कोशिश की है: एक ही त्रुटि।) स्पष्ट रूप से मैं कुछ गलत कर रहा हूं, लेकिन मेरा गूगल-फू आज मदद नहीं कर रहा है। मैं देख सकता हूं कि कैसे स्थिरांक और चर को समेटना है , लेकिन कुछ भी नहीं समझा जाता है कि कैसे स्थिरांक और अभिव्यक्तियों को संक्षिप्त करना है।

क्या आप मुझे सही दिशा में इंगित कर सकते हैं, कृपया?

जवाबों:


2

तुम इतने करीब हो। :)

आपको स्टेटमेंट के रिटर्न वैल्यू को वेरिएबल के रूप में घोषित करने के लिए उपयोग$ करने की आवश्यकता है ।

इसलिए:

$a = 1
$t = "The answer is: " + $(if ($a -eq 1) { "one" } else { "not one" })
write-host $t

या शायद दो पंक्तियों के रूप में, राइट-होस्ट के प्रारूपण विकल्पों का उपयोग :

$a = 1
write-host ("{0} {1}" -f "The answer is:", $(if ($a -eq 1) { "one" } else { "not one" }))

धन्यवाद। तो if()एक अभिव्यक्ति नहीं है; इस संदर्भ में भी यह वास्तव में एक बयान है? मेरे लिए यह बल्कि उल्टा है, लेकिन मैं वास्तव में अधिक जानकारी के लिए संकेत की सराहना करता हूं। (मैं Unix / Linux के वर्ष (अन) सी, पर्ल, और यहां तक कि वीबी के स्वस्थ खुराक के साथ मिश्रित से Powershell पर आ रहा हूँ।)
roaima

मैं केवल इतना कह सकता हूं कि पावरस्ले अजीब हो सकता है क्योंकि यह चर है क्योंकि यह उपयुक्त संदर्भ का अनुमान लगाने की कोशिश कर रहा है - इसकी आदत हो। :) चर दिखाने की तर्ज पर, मैं उपयोग करने के बीच 'और "PS में तारों को घेरने के बीच के अंतर को पढ़ने की सलाह दूंगा - यह चर विस्तार के साथ काम करते समय एक अंतर बनाता है, और थोड़ी देर के लिए एक PS नौसिखिया दीवार से अपना सिर धमाका कर सकता है अगर वे बारीकियों से अवगत नहीं हैं। :)
ᴇc --ιᴇ007

धन्यवाद। मैं उद्धरणों के अंतर के साथ बहुत सहज हूं; यह यूनिक्स / लिनक्स शेल दुनिया में समान है।
रोज़ा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.