#macos #terminal #console
#macos #терминал #консоль
Вопрос:
Я пишу сценарий оболочки на OS X и не знаю, как повторно использовать возвращаемые значения и сохранять их как переменные. Например, если я введу команду «git submodule foreach —recursive» внутри терминала, я получу напечатанные 3 строки, например:
Entering 'path/of/submodule/1'
Entering 'path/of/submodule/2'
Entering 'path/of/submodule/3'
Теперь я хочу использовать эти строки путей для дальнейших манипуляций внутри моего скрипта. Итак, мне нужно сохранить их во что-то вроде, может быть, массива …. ??? Я впервые пытаюсь использовать сценарии оболочки, поэтому любые предложения приветствуются.
Ответ №1:
Типичным подходом было бы передать стандартный вывод в цикл while:
git submodule foreach --recursive
| while read line ; do
echo Processing $line
...
done
Чтобы строго ответить на ваш вопрос, вы также можете присвоить результат команды переменной с
a=$(git submodule foreach --recursive)
Если вы хотите a
быть массивом, используйте
a=($(git submodule foreach --recursive))
НО bash имеет тенденцию разделяться на пробелы, поэтому вам нужно быть осторожным при использовании этого синтаксиса для строк, содержащих пробелы, и вы ожидаете разделения при переводе строк.
Если ваша цель состоит в том, чтобы просто обрабатывать выходные данные по одной строке за раз, while
это самый простой вариант.