Inside single brackets, -a means AND, -o means OR, and ! means NOT.
Step 2: Identify the AND operator
The operator -a is used to combine two conditions with AND logic.
Final Answer:
-a -> Option D
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
Step 1: Understand the condition to check
We want to check if file.txt exists AND is readable, so both conditions must be true.
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.
Final Answer:
[ -e file.txt -a -r file.txt ] -> Option C
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
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.
Step 2: Evaluate OR (-o) logic
Since OR means either condition true passes, and both are true here, the whole condition is true.
Final Answer:
Check passed -> Option A
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
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.
Step 2: Confirm other syntax parts
The use of -a inside [ ] is valid. The closing bracket is present. So no error there.
Final Answer:
Missing spaces around ! operator -> Option A
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
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.
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).
Final Answer:
[ -n "$var" -a -e file1.txt -o -r file2.txt ] -> Option B