📖 Scenario: You are writing a simple script to check if certain files exist on your computer. This is useful when you want to make sure important files are present before running other commands.
🎯 Goal: Create a bash script that checks if a file named data.txt exists in the current folder and prints a message based on the result.
📋 What You'll Learn
Create a variable called filename with the value data.txt
Create a variable called filepath that stores the full path to the file using $(pwd) and filename
Use an if statement with the -e test to check if the file exists at filepath
Print File exists. if the file is found
Print File does not exist. if the file is not found
💡 Why This Matters
🌍 Real World
Checking if files exist is a common task in automation scripts to avoid errors when processing files.
💼 Career
Many IT and DevOps roles require writing scripts that verify file presence before running backups, deployments, or data processing.
Progress0 / 4 steps
1
Create the filename variable
Create a variable called filename and set it to the string data.txt.
Bash Scripting
Hint
Use filename="data.txt" to create the variable.
2
Create the filepath variable
Create a variable called filepath that combines the current directory path from $(pwd) and the filename variable, separated by a slash /.
Bash Scripting
Hint
Use filepath="$(pwd)/$filename" to combine the current directory and filename.
3
Check if the file exists
Write an if statement that uses [ -e "$filepath" ] to check if the file exists at filepath. Inside the if, print File exists.. Use else to print File does not exist. if the file is missing.
Bash Scripting
Hint
Use if [ -e "$filepath" ]; then to check file existence.
4
Print the result
Run the script and ensure it prints File exists. if data.txt is in the current folder, or File does not exist. if it is not.
Bash Scripting
Hint
Make sure the file data.txt is in your current folder or not, then run the script.
Practice
(1/5)
1. Which command correctly checks if a file named data.txt exists in a bash script?
easy
A. if [ -e data.txt ]; then echo "File exists"; fi
B. if ( -e data.txt ); then echo "File exists"; fi
C. if [[ exists data.txt ]]; then echo "File exists"; fi
D. if test -f data.txt then echo "File exists"; fi
Solution
Step 1: Understand the correct syntax for file existence check
The test command with square brackets and -e checks if a file or directory exists.
Step 2: Verify the command structure
The command if [ -e data.txt ]; then ... fi is the correct syntax in bash for this check.
Final Answer:
if [ -e data.txt ]; then echo "File exists"; fi -> Option A
Quick Check:
Use [ -e filename ] to check existence [OK]
Hint: Use [ -e filename ] inside if for existence check [OK]
Common Mistakes:
Using parentheses instead of square brackets
Using incorrect test operators like 'exists'
Missing semicolon or then keyword
2. Which of the following is the correct syntax to check if a file report.log exists and is a regular file in bash?
easy
A. if [ -d report.log ]; then echo "Exists"; fi
B. if [ -f report.log ]; then echo "Exists"; fi
C. if [ -e report.log ]; then echo "Exists"; fi
D. if test -x report.log; then echo "Exists"; fi
Solution
Step 1: Identify the test for regular file
The -f option checks if the file exists and is a regular file (not directory).
Step 2: Confirm the syntax
The syntax if [ -f report.log ]; then ... fi correctly checks for a regular file.
Final Answer:
if [ -f report.log ]; then echo "Exists"; fi -> Option B
Quick Check:
-f checks regular file existence [OK]
Hint: Use [ -f filename ] to check regular file existence [OK]
Common Mistakes:
Using -d which checks for directories
Using -x which checks for executable permission
Confusing -e (exists) with -f (regular file)
3. What will be the output of this script if myfile.txt does not exist?
if [ -e myfile.txt ]; then
echo "Found"
else
echo "Not Found"
fi
medium
A. Not Found
B. Syntax error
C. Found
D. No output
Solution
Step 1: Understand the condition
The condition [ -e myfile.txt ] checks if the file exists.
Step 2: Evaluate the file existence
Since myfile.txt does not exist, the condition is false, so the else branch runs.
Final Answer:
Not Found -> Option A
Quick Check:
File missing triggers else branch [OK]
Hint: If file missing, else branch runs [OK]
Common Mistakes:
Assuming output is 'Found' even if file missing
Confusing -e with other test operators
Missing else branch handling
4. Identify the error in this bash snippet that checks if config.cfg exists:
if [ -e config.cfg ]
echo "Exists"
fi
medium
A. Echo command syntax is wrong
B. Wrong test operator -e used
C. Missing closing bracket ]
D. Missing then keyword after condition
Solution
Step 1: Check if statement syntax
Bash requires the then keyword after the condition in an if statement.
Step 2: Identify missing part
The snippet lacks then after [ -e config.cfg ], causing a syntax error.
Final Answer:
Missing then keyword after condition -> Option D
Quick Check:
if needs then after condition [OK]
Hint: Always put then after if condition [OK]
Common Mistakes:
Omitting then keyword
Forgetting semicolon before then on same line
Misplacing brackets
5. You want to write a bash script that checks if a file named backup.tar.gz exists, and if it does, prints "Backup found", otherwise creates an empty file with that name. Which script snippet correctly does this?
hard
A. if [ -e backup.tar.gz ]; then touch backup.tar.gz; else echo "Backup found"; fi
B. if [ -f backup.tar.gz ]; then touch backup.tar.gz; else echo "Backup found"; fi
C. if [ -e "backup.tar.gz" ]; then echo "Backup found"; else touch backup.tar.gz; fi
D. if test -d backup.tar.gz; then echo "Backup found"; else touch backup.tar.gz; fi
Solution
Step 1: Check file existence correctly
Use [ -e "backup.tar.gz" ] to check if the file exists, quoting filename to handle spaces.
Step 2: Execute correct commands based on condition
If file exists, print "Backup found"; else create empty file with touch.
Final Answer:
if [ -e "backup.tar.gz" ]; then echo "Backup found"; else touch backup.tar.gz; fi -> Option C
Quick Check:
Check existence then else create file [OK]
Hint: Quote filenames and use if-else for existence and creation [OK]
Common Mistakes:
Swapping then and else commands
Using -d to check regular files
Not quoting filenames with spaces
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.