Как ZSH интерпретирует подстановочные знаки в переменной, используемой командами в качестве пути

Быстрая команда awkпоможет вам начать работу:

awk '$2 ~ /Success/{a=$4;next}; $2 ~ /Completed/{b=$8;c=$13;print a,b,c}' terminal_output.txt

Это не будет работать, если у вас есть несколько строк Successперед строкой Completedи т. д.

1
24.04.2020, 12:17
1 ответ

В отличие от других оболочек, -похожих на sh, zsh не выполняет раскрытие подстановочных знаков и разбиение слов при раскрытии переменной без кавычек. $TEST_PATHбез кавычек — это почти то, что вы интуитивно ожидаете :простой подстановки значения переменной. «Почти», потому что, если в результате получается пустое слово, это слово вообще удаляется.

Чтобы взять значение переменной и раскрыть в нем подстановочные знаки, используйте ${~…}форму раскрытия параметра :${~TEST_PATH}, которое также можно записать без фигурных скобок $~TEST_PATH.

Если совпадений нет, $~TEST_PATHвызывает ошибку. Чтобы вместо этого получить пустой список, используйте квалификаторNglob :$~TEST_PATH(N)

.
2
19.03.2021, 02:26

Теги

Похожие вопросы