$ cat test.sh
FA=("one" "two" "@" "four" "@" "six")
for i in ${!FA[@]}
do
if [ '@' = "${FA[$i]}" ]; then
echo "Found @ at index $i"
fi
done
$ test.sh
Found @ at index 2
Found @ at index 4
array 0 = First Last
array 1 = 123 some road
array 2 = some unit
array 3 = citySTATEZIP
array 4 = (111) 222-1111
array 5 = (111) 222-1112
array 6 = Fax:(111) 222-1113
array 7 = user@domain.com
array 8 = #:123456
The next problem is this data set (members 5-6) may or may not appear.
So algorithmically speaking and where I am getting stuck...
Next step:
search array for email address (using the @ symbol here to keep things simple)
Then I am going to use conditional / control flow statements using the position of the email address to further parse the data.
Not sure if this helps, but wanted to add some context.
The code that you have is looking for lines containing @ in the files named by lines in the file named by the expansion of the shell variable temporary_file . Presumably you're getting error messages because the lines in your file are not names of files to be searched.
If what you want to do is print lines in the file named by $temporary_file that contain an @ , that would much more simply be done by:
grep '@' "$temporary_file"
If you want a way to determine if the expansion of a shell variable ( $x in this example) contains an @ using only features that are available in all standards conforming shells, you could try something like:
if [ "${x#*@}" = "$x" ]
then echo 'no @ found'
else echo '@ found'
fi