У меня есть два запроса, которые я выполняю в двух разных системах. Каждый из них возвращает одну строку, и я хочу вывести их в одной строке.
если запросы дают результаты, похожие на:
echo this that and more
echo other great news
Я хочу иметь возможность выполнить некоторое переупорядочение и форматирование, например, так:
echo other this that great news and more
Если бы я мог выяснить, как отображать вывод строки в несколько переменных, я был бы хорошо. Я заставил это работать:
echo this that and more | while IFS=" ", read a b c
do
echo a=$a b=$b c=$c
done
Но как только я выхожу из цикла while, переменные a b и c выходят за рамки и больше не имеют своих значений.
Дело не в том, что они выходят за рамки , ksh
(по крайней мере, версия AT&T) не имеет этого ограничения bash
. Дело в том, что read
вызывается дважды.
Во второй раз он терпит неудачу и вытаскивает вас из цикла.
Поскольку второе чтение
ничего не читает, оно устанавливает a, b и c в пустую строку.
Просто сделайте:
echo this that and more | IFS=" " read a b c
echo "a=$a b=$b c=$c"