Bird
Raised Fist0
Bash Scriptingscripting~20 mins

test command and [ ] syntax in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Test Command Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of test command with string comparison
What is the output of this bash script snippet?
Bash Scripting
if test "abc" = "abc"; then echo success; else echo fail; fi
Asyntax error
Bsuccess
Ctest: command not found
Dfail
Attempts:
2 left
💡 Hint
The test command checks if two strings are equal.
💻 Command Output
intermediate
2:00remaining
Behavior of [ ] with numeric comparison
What will this script print?
Bash Scripting
if [ 5 -gt 3 ]; then echo yes; else echo no; fi
Ayes
Bno
Csyntax error
Dcommand not found
Attempts:
2 left
💡 Hint
The -gt operator compares numbers inside [ ].
💻 Command Output
advanced
2:00remaining
Effect of missing spaces in [ ] test
What error or output does this script produce?
Bash Scripting
if [5 -eq 5]; then echo ok; else echo fail; fi
Afail
Bsyntax error
Cok
Dbash: [5: command not found
Attempts:
2 left
💡 Hint
Remember that spaces are required around [ and ] in bash tests.
💻 Command Output
advanced
2:00remaining
Difference between test and [ ] with file existence
What is the output of this script if file.txt exists?
Bash Scripting
if test -f file.txt; then echo found; else echo missing; fi
Asyntax error
Bmissing
Cfound
Dcommand not found
Attempts:
2 left
💡 Hint
The -f option checks if a file exists and is a regular file.
💻 Command Output
expert
2:00remaining
Complex condition with test and [ ] combined
What does this script print if variable VAR is empty?
Bash Scripting
VAR=""; if test -z "$VAR" && [ 1 -eq 1 ]; then echo pass; else echo fail; fi
Apass
Bfail
Csyntax error
Dcommand not found
Attempts:
2 left
💡 Hint
test -z checks if a string is empty; && combines conditions.

Practice

(1/5)
1. What does the [ -f filename ] test check in a bash script?
easy
A. If filename is a directory
B. If filename is empty
C. If filename is executable
D. If filename exists and is a regular file

Solution

  1. Step 1: Understand the -f test

    The -f option in [ ] checks if the file exists and is a regular file (not a directory or special file).
  2. Step 2: Compare with other options

    -d checks for directory, -x for executable, and -s for non-empty file, so they don't match.
  3. Final Answer:

    If filename exists and is a regular file -> Option D
  4. Quick Check:

    -f means regular file check [OK]
Hint: Remember: -f means regular file exists [OK]
Common Mistakes:
  • Confusing -f with -d for directories
  • Forgetting spaces inside [ ]
  • Using filename without quotes causing errors
2. Which of the following is the correct syntax to test if variable var is equal to string hello in bash?
easy
A. [ $var = hello ]
B. [ $var == hello ]
C. [ "$var" = "hello" ]
D. [ "$var" == hello ]

Solution

  1. Step 1: Check quoting rules

    Variables should be quoted to avoid errors if empty or contain spaces, so "$var" is correct.
  2. Step 2: Check operator correctness

    Single equals = is POSIX compliant for string comparison inside [ ]. Double equals == works in [[ ]] but not always in [ ].
  3. Final Answer:

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

    Quote variables and use = inside [ ] [OK]
Hint: Always quote variables and use = inside [ ] [OK]
Common Mistakes:
  • Not quoting variables causing syntax errors
  • Using == inside [ ] which may fail
  • Missing spaces around brackets
3. What will be the output of this script snippet?
var=""
if [ -z "$var" ]; then
  echo "Empty"
else
  echo "Not Empty"
fi
medium
A. Empty
B. Not Empty
C. Syntax Error
D. No output

Solution

  1. Step 1: Understand the -z test

    -z returns true if the string length is zero (empty string).
  2. Step 2: Check variable value

    Variable var is set to empty string "", so [ -z "$var" ] is true and the if branch runs.
  3. Final Answer:

    Empty -> Option A
  4. Quick Check:

    -z tests empty string [OK]
Hint: Use -z to check empty strings [OK]
Common Mistakes:
  • Not quoting variable causing errors
  • Confusing -z with -n
  • Expecting else branch to run
4. Identify the error in this bash condition:
if [ $num -gt 10 ]; then
  echo "Greater"
fi
medium
A. Missing spaces inside [ ]
B. Variable $num should be quoted
C. Wrong operator for numeric comparison
D. Missing then keyword

Solution

  1. Step 1: Check variable usage in test

    When using variables in [ ], they should be quoted to avoid errors if empty or unset.
  2. Step 2: Analyze the given code

    The code uses $num unquoted. If num is empty, the test becomes invalid syntax.
  3. Final Answer:

    Variable $num should be quoted -> Option B
  4. Quick Check:

    Always quote variables in [ ] to avoid syntax errors [OK]
Hint: Quote variables inside [ ] to prevent errors [OK]
Common Mistakes:
  • Not quoting variables causing syntax errors
  • Confusing numeric and string operators
  • Forgetting spaces around brackets
5. You want to check if a file data.txt exists and is not empty before processing it in a script. Which condition correctly does this?
hard
A. [ -f data.txt ] && [ -s data.txt ]
B. [ -f data.txt -o -s data.txt ]
C. [ -f data.txt && -s data.txt ]
D. [ -f data.txt ] || [ -s data.txt ]

Solution

  1. Step 1: Understand the tests

    -f checks if file exists and is regular file; -s checks if file size is greater than zero (not empty).
  2. Step 2: Choose correct logical operator

    To require both conditions, use logical AND. Inside a single [ ], use -a; or chain separate tests with &&. Using && directly inside [ ] causes syntax error.
  3. Step 3: Analyze options

    The option with && inside single [ ] has syntax error. Chained tests with && are clear and reliable. Options using -o or || apply OR logic, incorrect.
  4. Final Answer:

    [ -f data.txt ] && [ -s data.txt ] -> Option A
  5. Quick Check:

    Use && to combine separate [ ] tests [OK]
Hint: Use separate [ ] with && for AND conditions [OK]
Common Mistakes:
  • Using -o or || which means OR, not AND
  • Using && inside a single [ ] (syntax error)
  • Not checking file size with -s
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