Here is your script with some modifications.
#!/bin/bash
# if file exist
#echo "Testing \ "$1""
if [ "$1" == "" ]
then
read -r -p "Enter the filename" file1
else
file1=$1
fi
if [ -f "$file1" ]
then
echo "$file1 does exist"
else
echo "$file1 does not exist!"
echo "Creating $file1"
echo "1" > "$file1"
exit 1
fi
#echo "Testing \ "$2""
if [ "$2" == "" ]
then
read -r -p "Enter the filename" file2
else
file1=$2
fi
if [ -f "$file2" ]
then
echo "$file2 does exist"
else
echo "$file2 does not exist!"
echo "Creating $file2"
echo "1" > "$file2"
exit 1
fi
if [ "$3" == "" ]
then
read -r -p "Enter the filename" file3
else
file3=$3
fi
# the following assumes that the data from the file is an integer
# and that it consists of only one line containing one value
# similar techniques can be used to do something much more powerful
data1=$(<"$file1")
data2=$(<"$file2")
# it's usually a good idea to validate data, but I have not included any validation
((data3 = data1 + data2))
echo "$data3" > "$file3" # overwrite the previous contents of the file with the new value
As long as neither file1 or file2 changes, the contents of file3 will always be the same on repeated runnings of the script above. If file1 or file2 don't exist, a "1" is written to them as a default value.
Here is an improved version of the script using functions:
#!/bin/bash
checkarg () {
local filename=$1
if [ "$filename" == "" ]
then
read -r -p "Enter the filename" filename
fi
echo "$filename"
}
checkfile () {
local filename=$1
if [ -f "$filename" ]; then
echo "$filename does exist"
else
echo "$filename does not exist!"
echo "Creating $filename"
echo "1" > "$filename"
# you could remove this exit if you want the script to continue
# with newly created files instead of exiting
exit 1
fi
}
file1=$(checkarg "$1")
checkfile "$file1"
file2=$(checkarg "$2")
checkfile "$file2"
file3=$(checkarg "$3")
data1=$(< "$file1")
data2=$(< "$file2")
((data3 = data1 + data2))
echo "$data3" > "$file3"
$1
and$2
) then asking for a third filename in the scriptread file
... which file are you trying to read/increment/write?