Как извлечь несколько столбцов MySQL в переменную среды в сценарии оболочки? - PullRequest
4 голосов
/ 16 октября 2011

Я хотел бы получить некоторые данные из таблицы в переменные в сценарии оболочки.Прямо сейчас я делаю что-то вроде этого:

export NAME=`mysql -NB -e "select name from user where id = $ID"`
export AGE=`mysql -NB -e "select age from user where id = $ID"`
export LOCATION=`mysql -NB -e "select location from user where id = $ID"`

Это работает нормально, но я бы хотел сделать все это одним запросом, например:

select name, age, location from user where id = $ID

Я пытался использовать "read""вот так:

mysql -NB -e "select name, age, location from user where id = $ID" | read NAME AGE LOCATION
echo $NAME

... но это не сработало так, как я ожидал (строка" echo "не выводит).Я что-то упустил?

1 Ответ

4 голосов
/ 16 октября 2011

Если вы используете read в конвейере, он создаст вложенную оболочку и установит переменную в этой вложенной оболочке, которая не влияет на родительскую оболочку (где вы работаете). Идея:

export IFS=. ; set -- $(mysql -N "select CONCAT_WS('.',name,age,location) from user where id=$ID")
NAME="$1" ; AGE="$2" ; LOCATION="$3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...