Bird
Raised Fist0
Bash Scriptingscripting~10 mins

test command and [ ] syntax 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 check if the variable 'file' exists.

Bash Scripting
if [ -e [1] ]; then echo "File exists"; fi
Drag options to blanks, or click blank then click option'
Afile
B$file
C"file"
D$FILE
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the $ before the variable name inside [ ]
Using quotes incorrectly around the variable
2fill in blank
medium

Complete the code to test if the variable 'num' is equal to 10 using the test command.

Bash Scripting
if test [1] -eq 10; then echo "Number is 10"; fi
Drag options to blanks, or click blank then click option'
A$num
Bnum
C"num"
D$NUM
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable name without $
Putting quotes around the variable name
3fill in blank
hard

Fix the error in the code to correctly check if the string variable 'word' is empty.

Bash Scripting
if [ [1] = "" ]; then echo "Empty string"; fi
Drag options to blanks, or click blank then click option'
Aword
B$WORD
C"word"
D$word
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable name without $
Using quotes around the variable name
4fill in blank
hard

Fill both blanks to check if the file stored in 'filename' is readable and writable.

Bash Scripting
if [ [1] -r [2] ]; then echo "File is readable"; fi
Drag options to blanks, or click blank then click option'
A-r
B$filename
C-w
Dfilename
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable name without $
Mixing up -r and -w flags
5fill in blank
hard

Fill all three blanks to create a test that checks if the variable 'count' is greater than 5 and less than 10.

Bash Scripting
if [ [1] [2] 5 ] && [ [3] -lt 10 ]; then echo "Count is between 6 and 9"; fi
Drag options to blanks, or click blank then click option'
A$count
B-gt
D-lt
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting $ before variable
Using wrong comparison operators

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