If the quoting of the data is compatible to the Bash rules for Double Quotes, you can just use set:
#! /bin/bash
exec <<EOF
"1" "USA" "abc"
"2" "Canada" "pqr"
EOF
while read -r line; do
source <(printf 'set %s\n' "$line")
printf 'sr="%s" country="%s" name="%s"\n' "$@"
done
If the quoting of the data is compatible to the JSON quoting rules, you can use jq to parse the data:
#! /bin/bash
exec <<EOF
"1" "USA" "abc"
"2" "Canada" "pqr"
EOF
jq -sr '.[]' | while true; do
read -r sr || break
read -r country
read -r name
printf 'sr="%s" country="%s" name="%s"\n' \
"$sr" "$country" "$name"
done
This will be less prone to security exploits.
while read -r sr country name ; do … ; done < file.txt?sed 's/^"//;s/"$//;s/" "/\t/g' file.txt | while IFS=$'\t' read -r sr country name; do... Demo: ideone.com/bo8iIo