I'm in the final stages of a project and need to create a script that will run an executable a given number of times with varying input. One of the inputs is a file kept in a separate folder from the executable.
Before doing anything, I want to check whether the file exists. There are two possible file inputs that can be given, so I need to compare them. The possible inputs are
execute cancer 9execute promoter 9
where cancer and promoters are the datasets to be used in the program and 9 is the number of times the script loop has to execute.
Here's what I've come up with:
#!/bin/bash #Shell script to execute Proj 4 requirements while leaving the folder #structure alone separated. file1= "Data/BC/bc80-train-1" file2= "Data/Promoters/p80-train-1" if [ "$1" == "cancer" ] then #execute command on the cancer dataset echo "Executing on the cancer dataset" if [ -f "$file1" ] then echo "$file1 file exists..." else echo "$file1 file Missing, cancelling execution" echo "Dataset must be in ../Data/BC/ and file must be bc80-train-1" fi elif [ "$1" == "promoter" ] then #execute on the promoter dataset echo "Executing on the promoter dataset" if [ -f "$file2"] then echo "$file2 file exists..." else echo "$file2 file missing, cancelling execution" echo "Dataset must be in ~/Data/Promoters/ and file must be p80-train-1" fi fi The problem with this is it opens the files and outputs them to terminal, where each line ends in : command not found
I thought the -f and -e flags were used to check whether a file exists. So why is the file content being output to the terminal?
set -xnear the top of your code, it will output each command before running it, kind of like a debugger for bash. I also highly recomend sticking making the first line#!/bin/bash -uwhich will error on unset variables