Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Default values for input in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of using default values for input in bash scripts?
Default values provide a fallback when the user does not enter any input, ensuring the script can continue without errors.
Click to reveal answer
beginner
How do you assign a default value to a variable if the user input is empty in bash?
Use the syntax: variable=${input:-default_value}. This assigns default_value if input is empty or unset.
Click to reveal answer
intermediate
Explain the difference between ${var:-default} and ${var:=default} in bash.
${var:-default} returns default if var is unset or empty but does not change var. ${var:=default} assigns default to var if it is unset or empty.
Click to reveal answer
beginner
Write a simple bash script snippet that asks for a username and uses 'guest' as the default if no input is given.
read -p "Enter username: " user user=${user:-guest} echo "Hello, $user!"
Click to reveal answer
beginner
Why is it helpful to use default values in scripts that require user input?
It makes scripts more user-friendly and robust by avoiding errors or empty variables when users skip input. It also speeds up usage by providing sensible defaults.
Click to reveal answer
In bash, which syntax assigns a default value to a variable only if it is unset or empty, without changing the variable itself?
Avar=default
B${var:=default}
Cread -p "Enter value: " var
D${var:-default}
What will the following bash code output if the user presses Enter without typing anything? read -p "Name: " name name=${name:-John} echo $name
AJohn
BName
CEmpty line
DError
Which bash parameter expansion assigns the default value to the variable if it is empty or unset?
A${var-default}
B${var:-default}
C${var:=default}
D${var=default}
Why might you want to use default values for input in a bash script?
ATo avoid errors and provide fallback values
BTo make the script slower
CTo ignore user input completely
DTo make the script crash if input is missing
What does this bash code do? read -p "Enter age: " age age=${age:-18} echo "Age is $age"
AAlways prints 'Age is 18'
BPrints the entered age or 18 if empty
CPrints nothing
DCauses an error if no input
Explain how to use default values for user input in a bash script and why it is useful.
Think about how to assign a value if the user presses Enter without typing.
You got /3 concepts.
    Write a bash script snippet that asks for a filename and uses 'default.txt' if the user provides no input.
    Use ${variable:-default} syntax after reading input.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the expression ${name:-Guest} do in a bash script?
      easy
      A. It throws an error if name is not set.
      B. It assigns 'Guest' to name permanently.
      C. It deletes the variable name if it is empty.
      D. It uses the value of name if set; otherwise, it uses 'Guest' as default.

      Solution

      1. Step 1: Understand the syntax ${variable:-default}

        This syntax means: use the value of variable if it is set and not empty; otherwise, use default.
      2. Step 2: Apply to ${name:-Guest}

        If name is set and not empty, it returns name. If name is unset or empty, it returns 'Guest'.
      3. Final Answer:

        It uses the value of name if set; otherwise, it uses 'Guest' as default. -> Option D
      4. Quick Check:

        Default value syntax = It uses the value of name if set; otherwise, it uses 'Guest' as default. [OK]
      Hint: Use ${var:-default} to provide fallback values [OK]
      Common Mistakes:
      • Thinking it assigns the default permanently
      • Confusing with ${var:=default} which assigns default
      • Assuming it throws error if variable unset
      2. Which of the following is the correct syntax to read a variable user with a default value 'admin' if input is empty?
      easy
      A. read user; user=${user:-admin}
      B. read user || user=admin
      C. read user && user=admin
      D. read user ? user=admin

      Solution

      1. Step 1: Understand how to read input and set default

        The read command takes input into user. To set a default if empty, use user=${user:-admin}.
      2. Step 2: Check each option

        read user; user=${user:-admin} correctly reads input then sets default if empty. Options A, C, D use invalid syntax for default assignment.
      3. Final Answer:

        read user; user=${user:-admin} -> Option A
      4. Quick Check:

        Correct default syntax after read = read user; user=${user:-admin} [OK]
      Hint: Use read then assign default with ${var:-default} [OK]
      Common Mistakes:
      • Using || or && incorrectly for default assignment
      • Trying to assign default inside read command
      • Using invalid operators like ? for default
      3. What is the output of this script if the user presses Enter without typing anything?
      read -p "Enter your city: " city
      city=${city:-Unknown}
      echo "City: $city"
      medium
      A. City: city
      B. City:
      C. City: Unknown
      D. Error: city not set

      Solution

      1. Step 1: Analyze read input behavior

        User presses Enter without input, so city is empty string.
      2. Step 2: Apply default value substitution

        city=${city:-Unknown} sets city to 'Unknown' because city is empty.
      3. Final Answer:

        City: Unknown -> Option C
      4. Quick Check:

        Empty input triggers default = City: Unknown [OK]
      Hint: Empty input triggers default with ${var:-default} [OK]
      Common Mistakes:
      • Expecting empty output instead of default
      • Confusing ${var:-default} with ${var-default}
      • Assuming error occurs on empty input
      4. Identify the error in this script snippet:
      read name
      name=${name=John}
      echo "Name: $name"
      medium
      A. The echo command syntax is wrong
      B. The default value syntax is incorrect; should use :- instead of =
      C. The variable name is reserved and cannot be used
      D. The read command is missing a prompt

      Solution

      1. Step 1: Check default value syntax

        The script uses ${name=John} which is invalid for default substitution. The correct syntax is ${name:-John}.
      2. Step 2: Confirm other parts

        read without prompt is valid, name is a valid variable, and echo syntax is correct.
      3. Final Answer:

        The default value syntax is incorrect; should use :- instead of = -> Option B
      4. Quick Check:

        Default syntax requires :- not = [OK]
      Hint: Use ${var:-default} not ${var=default} for default values [OK]
      Common Mistakes:
      • Using = instead of :- for default values
      • Thinking read needs a prompt
      • Confusing variable names with reserved words
      5. You want to write a script that asks for a username and a port number. If the user presses Enter without input, the username should default to 'guest' and the port to '8080'. Which script snippet correctly implements this?
      hard
      A. read -p "Username: " user user=${user:-guest} read -p "Port: " port port=${port:-8080} echo "User=$user, Port=$port"
      B. read -p "Username: " user user=${user=guest} read -p "Port: " port port=${port=8080} echo "User=$user, Port=$port"
      C. read user if [ -z "$user" ]; then user=guest; fi read port if [ -z "$port" ]; then port=8080; fi echo "User=$user, Port=$port"
      D. read user user=${user:-guest} read port port=${port-8080} echo "User=$user, Port=$port"

      Solution

      1. Step 1: Check default value syntax for both variables

        read -p "Username: " user user=${user:-guest} read -p "Port: " port port=${port:-8080} echo "User=$user, Port=$port" uses ${var:-default} which correctly sets default if variable is empty or unset.
      2. Step 2: Verify prompt usage and output

        read -p "Username: " user user=${user:-guest} read -p "Port: " port port=${port:-8080} echo "User=$user, Port=$port" uses read -p to prompt user, then sets defaults, then echoes both variables correctly.
      3. Final Answer:

        read -p "Username: " user user=${user:-guest} read -p "Port: " port port=${port:-8080} echo "User=$user, Port=$port" -> Option A
      4. Quick Check:

        Use ${var:-default} with read -p for defaults = read -p "Username: " user user=${user:-guest} read -p "Port: " port port=${port:-8080} echo "User=$user, Port=$port" [OK]
      Hint: Use read -p with ${var:-default} for clean input with defaults [OK]
      Common Mistakes:
      • Using = instead of :- for defaults
      • Not prompting user with read -p
      • Using ${var-default} which skips empty but not unset
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard