Вы, похоже, ищете что-то вроде
while read -r i value; do
var1=$value
echo "$i and $var1"
done <filename.lst
Вы хотите избегать чтения строк с for
и бесполезным использованием cat
.
Awk не может манипулировать вашими переменными Bash, и Bash не знает, что происходит внутри вашего сценария Awk.
Если вы абсолютно настаиваете на использовании Awk для этого, вы хотите, чтобы его вывод был строкой.вы можете безопасно eval
из вашей оболочки.
eval "$(awk '{ print "var1=\047" $2 "\047;\n" \
"echo \"" $1 " and \$var1\"" }' filename.lst)"
Точное определение "безопасно", вероятно, слишком сложно точно определить.Другими словами, просто не делайте этого.