Saturday, October 29, 2022

[SOLVED] Checking for multiple files with bash script

Issue

I have a bash file where I am currently using an if statement to check for two files existing before continuing with the rest.

if [[ -e $flchck ]] && [[ -e $flchck2 ]]; then

--do stuff here

else

--sends me an email telling me the files were not found.

My question is, is this the most efficient way to do this? If I need it to check more files, would I just keep adding && to include more.

What if I want it to tell me which file(s) was missing when it did this check.

Any guidance/direction on how to handle this would be greatly appreciated.


Solution

Typically one would use an array for this purpose. Assuming that your error-report-mailing code is encapsulated in a command named send_error_email, this may look like:

#!/usr/bin/env bash
files=( /path/to/file1 /path/to/file2 /path/to/file3 )
for file in "${files[@]}"; do
  if ! [[ -e $file ]]; then
    send_error_email "$file does not exist"
    exit 1
  fi
done
# do stuff here


Answered By - Charles Duffy
Answer Checked By - Robin (WPSolving Admin)