Я хочу извлечь поля из строки в переменные:
aaa bbb ccc
'aaa' => $ a, 'bbb' => $ b, 'ccc' => $ c. Как это сделать в баше?
Я не хочу конвейерно обрабатывать обработку, просто нужно извлечь их в переменные или массив.
2 ответа
Вы можете просто сделать:
read a b c <<<"aaa bbb ccc"
ВЫХОД
$ echo "a=[$a] b=[$b] c=[$c]"
a=[aaa] b=[bbb] c=[ccc]
Согласно руководству по bash:
Here Strings
A variant of here documents, the format is:
<<<word
The word is expanded and supplied to the command on its standard input.
Самое простое это:
read a b c
С перенаправлением ввода-вывода с того места, где читается строка:
while read a b c
do
# Process
done < $some_file
Если данные уже находятся в переменной, вы можете использовать:
read a b c < <(echo "$variable")
Здесь используется особенность Bash - подстановка процесса.
Похожие вопросы
Новые вопросы
bash
Этот тег предназначен для вопросов о сценариях, написанных для командной оболочки Bash. Сценарии оболочки с синтаксисом или другими ошибками, пожалуйста, проверьте их на https://shellcheck.net, прежде чем публиковать здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут актуальны на Unix & Linux Stack Exchange или Super User, чем на Stack Overflow.
echo aaa bbb ccc | read a b c
даже не работает в bash, дажеecho aaa | read x
не работает.