Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Logical operators (-a, -o, !) 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 file 'data.txt' exists and is readable.

Bash Scripting
if [ -e data.txt [1] ]; then echo "File exists and is readable"; fi
Drag options to blanks, or click blank then click option'
A-a -r data.txt
B-a -e data.txt
C-a -f data.txt
D-o -r data.txt
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-o' instead of '-a' for AND operation.
Forgetting to include the file test after '-a'.
Using '-f' instead of '-r' when checking readability.
2fill in blank
medium

Complete the code to check if the variable 'count' is either 0 or 10.

Bash Scripting
if [ "$count" -eq 0 [1] "$count" -eq 10 ]; then echo "Count is 0 or 10"; fi
Drag options to blanks, or click blank then click option'
A==
B-a
C-o
D!
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-a' which means AND instead of OR.
Using '==' which is not valid in this context.
Using '!' which negates a condition.
3fill in blank
hard

Fix the error in the code to check if the directory 'logs' does NOT exist.

Bash Scripting
if [ [1] -e logs ]; then echo "Logs directory missing"; fi
Drag options to blanks, or click blank then click option'
A-z
B-o
C-a
D!
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-o' or '-a' which are logical AND/OR, not negation.
Using '-z' which checks for empty strings, not existence.
4fill in blank
hard

Complete the code to check if the file 'config.cfg' exists AND is NOT empty.

Bash Scripting
if [ -e config.cfg [1] -s config.cfg ]; then echo "Config file exists and is not empty"; fi
Drag options to blanks, or click blank then click option'
A-a
B-o
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-o' which means OR instead of AND.
Confusing '-s' (non-empty) with empty check; '! -s' would be for empty or non-existent.
5fill in blank
hard

Fill all three blanks to create a condition that checks if variable 'user' is NOT 'admin' AND file 'access.log' exists OR variable 'mode' equals 'debug'.

Bash Scripting
if [ ! "$user" = [1] [2] -e access.log [3] "$mode" = "debug" ]; then echo "Condition met"; fi
Drag options to blanks, or click blank then click option'
A"admin"
B-a
C-o
D"root"
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong strings for user comparison.
Mixing up '-a' and '-o' operators.
Not quoting variables properly.

Practice

(1/5)
1. Which logical operator in bash scripting means AND when used inside [ ]?
easy
A. &&
B. -o
C. !
D. -a

Solution

  1. Step 1: Understand bash logical operators inside [ ]

    Inside single brackets, -a means AND, -o means OR, and ! means NOT.
  2. Step 2: Identify the AND operator

    The operator -a is used to combine two conditions with AND logic.
  3. Final Answer:

    -a -> Option D
  4. Quick Check:

    AND operator = -a [OK]
Hint: Remember: -a is AND, -o is OR, ! is NOT inside [ ] [OK]
Common Mistakes:
  • Confusing -a with -o
  • Using && inside [ ] which is invalid
  • Thinking ! means AND
2. Which of the following is the correct syntax to check if file file.txt exists AND is readable in bash?
easy
A. [ -e file.txt -o -r file.txt ]
B. [ -e file.txt && -r file.txt ]
C. [ -e file.txt -a -r file.txt ]
D. [ ! -e file.txt -a -r file.txt ]

Solution

  1. Step 1: Understand the condition to check

    We want to check if file.txt exists AND is readable, so both conditions must be true.
  2. Step 2: Choose correct logical operator and syntax

    Inside [ ], -a means AND, so [ -e file.txt -a -r file.txt ] is correct. Using -o means OR, which is wrong here. Using && inside [ ] is invalid syntax.
  3. Final Answer:

    [ -e file.txt -a -r file.txt ] -> Option C
  4. Quick Check:

    AND check uses -a inside [ ] [OK]
Hint: Use -a for AND inside [ ], not && or -o for AND [OK]
Common Mistakes:
  • Using -o instead of -a for AND
  • Using && inside [ ] which causes syntax error
  • Negating conditions incorrectly with !
3. What will be the output of this script snippet?
if [ -f myfile.txt -o ! -r myfile.txt ]; then echo "Check passed"; else echo "Check failed"; fi

Assuming myfile.txt exists but is NOT readable.
medium
A. Check passed
B. Check failed
C. Syntax error
D. No output

Solution

  1. Step 1: Analyze conditions with given file state

    -f myfile.txt is true because file exists. ! -r myfile.txt is true because file is not readable.
  2. Step 2: Evaluate OR (-o) logic

    Since OR means either condition true passes, and both are true here, the whole condition is true.
  3. Final Answer:

    Check passed -> Option A
  4. Quick Check:

    True OR True = True [OK]
Hint: OR (-o) passes if any condition is true [OK]
Common Mistakes:
  • Thinking ! -r means readable
  • Confusing -o with -a
  • Expecting syntax error due to !
4. Identify the error in this bash condition:
if [ !-f myfile.txt -a -r myfile.txt ]; then echo "Valid"; fi
medium
A. Missing spaces around ! operator
B. Incorrect use of -a inside [ ]
C. No error, condition is correct
D. Missing closing bracket ]

Solution

  1. Step 1: Check spacing around ! operator

    In bash, ! must have a space after it inside [ ]. The code [ ! -f myfile.txt -a -r myfile.txt ] is correct only if spaces are present. If missing, it causes error.
  2. Step 2: Confirm other syntax parts

    The use of -a inside [ ] is valid. The closing bracket is present. So no error there.
  3. Final Answer:

    Missing spaces around ! operator -> Option A
  4. Quick Check:

    ! needs spaces inside [ ] [OK]
Hint: Always put spaces around ! inside [ ] [OK]
Common Mistakes:
  • Using && or || inside [ ]
  • Forgetting spaces around operators
  • Assuming -a is invalid inside [ ]
5. You want to write a bash condition that checks if a variable var is NOT empty AND file1.txt exists OR file2.txt is readable. Which condition is correct?
hard
A. [ -n "$var" -a ( -e file1.txt -o -r file2.txt ) ]
B. [ -n "$var" -a -e file1.txt -o -r file2.txt ]
C. [ -z "$var" -a -e file1.txt -o -r file2.txt ]
D. [ -n "$var" -o -e file1.txt -a -r file2.txt ]

Solution

  1. Step 1: Understand the logic to implement

    We want: var NOT empty AND file1 exists OR file2 readable, i.e., (NOT empty AND file1 exists) OR file2 readable.
  2. Step 2: Check each option's logic and syntax

    A: Parentheses for grouping invalid inside [ ], syntax error.
    B: [ -n "$var" -o -e file1.txt -a -r file2.txt ] wrong logic: mixes OR then AND.
    C: [ -z "$var" -a -e file1.txt -o -r file2.txt ] uses -z (empty), wrong for NOT empty.
    D: [ -n "$var" -a -e file1.txt -o -r file2.txt ] correct: left-to-right ((non-empty -a exists) -o readable).
  3. Final Answer:

    [ -n "$var" -a -e file1.txt -o -r file2.txt ] -> Option B
  4. Quick Check:

    -a/-o left-to-right no grouping needed [OK]
Hint: -a/-o associate left-to-right inside [ ] [OK]
Common Mistakes:
  • Trying to group with ( ) invalid in [ ]
  • Mixing -o and -a without understanding associativity
  • Using -z for non-empty check
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