6

Я пытаюсь передать некоторые данные из канала Bash в переменную Bash с помощью команды read, например так:

$ echo "Alexander the Grape" | read quot
$ echo $quot
$ 

Но квота пуста. Некоторые из Google показали, что это не ошибка; это целевая особенность Bash. (Раздел E5 в FAQ.)

Но когда я попробовал то же самое в zsh, это сработало. (То же самое для кш.) Есть ли способ заставить эту работу в Bash? Я действительно не хочу набирать:

$ quot=$(echo "Alexander the Grape")

Особенно для длинных команд.

4 ответа4

2

Для получения дополнительной информации по этому вопросу см. BashFAQ/024.

В Bash существует множество способов назначения переменных:

var=$(command)
read var <<< $(command)
read var <<< EOF
$(command)
EOF
printf -v var "%s" $(command)

и т.п.

0

Я предполагаю, что вы пытаетесь создать команду внутри переменной, а затем запустить ее, указав переменную? Тогда не надо. запустить команду как есть.

0

Нету. Если вы предпочитаете поведение другой оболочки, переключитесь на эту оболочку. Рыночные силы. :)

0
read quot < <(echo "Alexander the Grape")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .