Часть sh - скрипт
sqlget='select id, code, name, brand from table where id="'$id'"';
result=$(mysql -h$host -u $dbuser -p$dbpass $db -e "$sqlget" -N -s);
echo $result;
code=$(echo $result | cut -d " " -f 2);
name=$(echo $result | cut -d " " -f 3);
brand=$(echo $result | cut -d " " -f 4);
Все работает, при условии, если в поле нет пробела. Если есть, он считается разделителем и соответственно, следующее часть строки поля попадает в другую переменную.
Вариант с массивами не проходит - это только в bash, но не в sh.
Есть еще вариант - INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ' ,'. но в этом случае нужно использовать secure_file_priv. И возникает вопрос: Как направить результат запроса не файл, а в переменную. Еще не пробовал.
Ну и самый "не красивый" вариант - выдергивать каждое поле отдельным запросом не рассматриваю. )
Какие еще есть варианты?