← Back to Bash Course | Chapter 2: Variables & Types | Lesson 13 of 13

Default Values और Parameter Expansion की Basics

Parameter expansion आपको एक variable से इसकी value पूछने देता है और साथ ही यह भी कहने देता है कि अगर वह variable empty या unset हो तो क्या होना चाहिए।
Syntax
bash
${variable:-default}
${variable:=default}
${variable:?error message}

${var:-default}: var बदले बिना एक Fallback उपयोग करें

${var:-default} var की value में expand होता है अगर यह set और non-empty है, या अन्यथा default में, कभी var को खुद modify किए बिना। यह एक single expression में उपयोग के लिए एक variable को एक safe fallback value देने का सबसे common तरीका है।

उदाहरण: ${var:-default}: Use a Fallback Without Changing var

bash
#!/bin/bash
unset username
echo "Hello, ${username:-Guest}!"
echo "username is still: [${username}]"

${var:=default}: एक Fallback उपयोग करें और इसे Assign करें

${var:=default} :- जैसा behave करता है लेकिन additionally जब यह unset या empty हो तो default को var में assign भी करता है, इसलिए var के subsequent references नई value देखते हैं। यह सिर्फ plain variables पर काम करता है, $1 जैसे positional parameters पर नहीं।

उदाहरण: ${var:=default}: Use a Fallback and Assign It

bash
#!/bin/bash
unset config_path
echo "Config: ${config_path:=/etc/default/app.conf}"
echo "config_path is now: $config_path"

${var:?message}: एक Value Require करें

${var:?message} var की value में expand होता है अगर यह set और non-empty है; अगर नहीं, तो यह message को stderr पर print करता है और script को एक non-zero status के साथ exit करा देता है। यह enforce करने का एक concise तरीका है कि एक required variable असल में provide किया गया था।

उदाहरण: ${var:?message}: Require a Value

bash
#!/bin/bash
api_key="abc123"
echo "Using API key: ${api_key:?ERROR: api_key must be set}"

${var:+alt}: सिर्फ अगर Set हो

${var:+alt} तब alt में expand होता है जब var set और non-empty हो, और कुछ भी नहीं जब var unset या empty हो -- :- की mirror image। यह एक flag या text का टुकड़ा conditionally सिर्फ तब शामिल करने के लिए handy है जब एक variable की कोई real value हो।

उदाहरण: ${var:+alt}: Only If Set

bash
#!/bin/bash
verbose="yes"
quiet=""
echo "Verbose flag: ${verbose:+--verbose}"
echo "Quiet flag: ${quiet:+--quiet}"
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. :- (default उपयोग करें, assign न करें) को := (default उपयोग करें AND इसे variable में वापस assign करें) के साथ confuse करना; वे similar दिखते हैं लेकिन उनके side effects बहुत अलग हैं।
  2. ${var:-default} में colon भूल जाना meaning बदल देता है; ${var-default} सिर्फ एक completely unset variable के लिए trigger होता है, जबकि ${var:-default} एक ऐसे variable के लिए भी trigger होता है जो set है पर empty है।
  3. $1 जैसे positional parameters पर ${var:=default} उपयोग करना; Bash इस तरह positional parameters को assign करने की अनुमति नहीं देता और एक error raise करेगा।
चैप्टर सारांश
  • ${var:-default} default में expand होता है अगर var unset या empty हो, var को खुद modify किए बिना।
  • ${var:=default} वही करता है लेकिन बाद में उपयोग के लिए default को var में वापस assign भी करता है।
  • ${var:?message} एक error print करता है और script को exit कर देता है अगर var unset या empty हो -- required inputs enforce करने के लिए useful।
  • ${var:+alt} सिर्फ तब alt में expand होता है जब var set और non-empty हो (:- का inverse condition)।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.