Bird
Raised Fist0
Bash Scriptingscripting~10 mins

[[ ]] extended test in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to test if the variable 'var' is equal to 'hello'.

Bash Scripting
if [[ $var [1] "hello" ]]; then
  echo "Match"
fi
Drag options to blanks, or click blank then click option'
A==
B=
C-eq
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '=' inside [[ ]] instead of '=='.
Using '-eq' which is for numbers, not strings.
2fill in blank
medium

Complete the code to check if the file 'myfile.txt' exists.

Bash Scripting
if [[ [1] "myfile.txt" ]]; then
  echo "File exists"
fi
Drag options to blanks, or click blank then click option'
A-e
B-f
C-d
D-s
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-d' which checks for directories only.
Using '-f' which checks for regular files but may fail if file is special.
3fill in blank
hard

Fix the error in the code to check if variable 'num' is greater than 10.

Bash Scripting
if [[ $num [1] 10 ]]; then
  echo "Greater"
fi
Drag options to blanks, or click blank then click option'
A>
B<
C-gt
D-eq
Attempts:
3 left
💡 Hint
Common Mistakes
Using '>' which compares strings lexicographically.
Using '-eq' which checks equality, not greater than.
4fill in blank
hard

Fill in the blank to check if variable 'word' length is greater than 3.

Bash Scripting
if [[ ${#word} [1] 3 ]]; then
  echo "Long word"
fi
Drag options to blanks, or click blank then click option'
A==
B-lt
C-eq
D-gt
Attempts:
3 left
💡 Hint
Common Mistakes
Using '==' which compares strings, not numbers.
Using '-lt' which means less than, not greater.
5fill in blank
hard

Fill both blanks to check if variable 'input' is not empty and equals 'yes'.

Bash Scripting
if [[ -n $input && $input [1] [2] ]]; then
  echo "Confirmed"
fi
Drag options to blanks, or click blank then click option'
A==
B"yes"
C"no"
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '!=' instead of '==' for equality.
Forgetting quotes around the string 'yes'.

Practice

(1/5)
1. What does the [[ ]] construct do in a bash script?
easy
A. It tests conditions like comparing strings or numbers.
B. It defines a function in bash.
C. It creates a new variable.
D. It runs a command in the background.

Solution

  1. Step 1: Understand the purpose of [[ ]]

    The [[ ]] syntax is used in bash to test conditions such as string comparison, number comparison, and file checks.
  2. Step 2: Compare with other options

    Options B, C, and D describe other bash features unrelated to [[ ]].
  3. Final Answer:

    It tests conditions like comparing strings or numbers. -> Option A
  4. Quick Check:

    [[ ]] = condition test [OK]
Hint: Remember: [[ ]] is for testing conditions in bash [OK]
Common Mistakes:
  • Confusing [[ ]] with function definition syntax
  • Thinking [[ ]] creates variables
  • Assuming [[ ]] runs commands
2. Which of the following is the correct syntax to check if variable var equals "hello" using [[ ]]?
easy
A. [[ $var != "hello" ]]
B. [[ $var == "hello" ]]
C. [[ $var === "hello" ]]
D. [[ $var -eq "hello" ]]

Solution

  1. Step 1: Identify correct string comparison operator in [[ ]]

    In bash, inside [[ ]], the operator for string equality is ==. -eq is for numeric equality. === is invalid.
  2. Step 2: Check each option

    [[ $var != "hello" ]] checks inequality. [[ $var -eq "hello" ]] uses numeric -eq on string (error). [[ $var === "hello" ]] uses invalid ===. [[ $var == "hello" ]] uses == correctly.
  3. Final Answer:

    [[ $var == "hello" ]] -> Option B
  4. Quick Check:

    String equality in [[ ]] uses == [OK]
Hint: Use == for string equality inside [[ ]] [OK]
Common Mistakes:
  • Using === which is invalid in bash
  • Using -eq for string comparison
  • Using != when checking for equality
3. What will be the output of this script snippet?
var=5
if [[ $var -gt 3 && $var -lt 10 ]]; then
echo "In range"
else
echo "Out of range"
fi
medium
A. In range
B. Out of range
C. Syntax error
D. No output

Solution

  1. Step 1: Evaluate numeric conditions inside [[ ]]

    The variable var is 5. The condition checks if 5 is greater than 3 and less than 10, which is true.
  2. Step 2: Determine which branch runs

    Since the condition is true, the script echoes "In range".
  3. Final Answer:

    In range -> Option A
  4. Quick Check:

    5 > 3 and 5 < 10 = true [OK]
Hint: Check each numeric condition carefully with && [OK]
Common Mistakes:
  • Confusing -gt and -lt operators
  • Using single & instead of &&
  • Forgetting to quote variables (not critical here)
4. Identify the error in this bash snippet:
filename="test.txt"
if [[ -f $filename && -r $filename ]]
then
echo "File exists and readable"
fi
medium
A. Variable $filename not quoted
B. Wrong operator for file check
C. Missing closing bracket "]" for [[ ]]
D. Missing then keyword

Solution

  1. Step 1: Check syntax of [[ ]] condition

    The condition starts with [[ and has matching closing ]]. So brackets are correct.
  2. Step 2: Verify other parts

    The then keyword is missing after the condition line, which causes a syntax error.
  3. Final Answer:

    Missing then keyword -> Option D
  4. Quick Check:

    Every if condition must be followed by then [OK]
Hint: Always include then after if condition [OK]
Common Mistakes:
  • Forgetting the then keyword
  • Using single [ with && without escaping
  • Ignoring variable quoting warnings
5. You want to check if a variable input is either "yes" or "y" (case insensitive) using [[ ]]. Which snippet correctly does this?
hard
A. [[ $input =~ ^(yes|y)$ ]]
B. [[ $input == "yes" || $input == "y" ]]
C. [[ ${input,,} == "yes" || ${input,,} == "y" ]]
D. [[ $input == "yes" && $input == "y" ]]

Solution

  1. Step 1: Understand case-insensitive check

    To ignore case, convert input to lowercase using ${input,,} before comparison.
  2. Step 2: Check logical OR condition

    We want to accept either "yes" or "y", so use || between comparisons.
  3. Step 3: Evaluate options

    [[ ${input,,} == "yes" || ${input,,} == "y" ]] correctly converts to lowercase and uses OR. [[ $input == "yes" || $input == "y" ]] lacks case conversion. [[ $input =~ ^(yes|y)$ ]] uses regex but is case-sensitive. [[ $input == "yes" && $input == "y" ]] uses AND which requires both to be true, impossible here.
  4. Final Answer:

    [[ ${input,,} == "yes" || ${input,,} == "y" ]] -> Option C
  5. Quick Check:

    Use ${var,,} for lowercase and || for OR [OK]
Hint: Use ${var,,} to lowercase and || for OR in [[ ]] [OK]
Common Mistakes:
  • Not converting input to lowercase
  • Using && instead of || for alternatives
  • Incorrect regex syntax inside [[ ]]
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