Почему git заключает мой журнал в кавычки?

Я не понимаю, почему вы начинаете бить, а не рыбу. Если рыба — это оболочка, которую вы хотите использовать, то почему бы не установить ее в качестве оболочки по умолчанию? «chsh -s /usr/local/bin/fish», затем в редких случаях, когда вы хотите/нужно запустить команду bash, вы просто набираете «bash», которая бросает вас в оболочку bash, а затем, когда вы закончите, вы набираете «exit», чтобы вернуться к рыбе.

Подробнее об этом можно узнать на странице "https://github.com/fish-shell/fish-shell#switching-to-fish"

0
10.05.2016, 23:43
1 ответ

Разница обусловлена некоторыми особенностями цитирования оболочки.

Если вы выполните любой из этих вариантов (это эквивалентные способы цитирования в shell),

git log --pretty=format:'%ad %s%d'
git log '--pretty=format:%ad %s%d'
git log --pretty=format:%ad\ %s%d
git log --pretty=form'at:%ad %'s%d
git log --pretty=format:%ad" "%s%d
git log --pretty=format:"%ad %s%d"

git получит два аргумента, первый из которых будет log, а второй --pretty=format:%ad %s%d.

При выполнении

SIMPLE='--pretty=format:"%ad %s%d"'

переменная SIMPLE будет иметь значение --pretty=format:"%ad %s%d", включая двойные кавычки.

Теперь, если мы находимся в zsh и выполняем

git log $SIMPLE

или в bash

git log "$SIMPLE"

git, второй аргумент будет выглядеть как --pretty=format:"%ad %s%d". (Если я выполню git log $SIMPLE в bash, я получу ошибку, потому что git получает три аргумента: log, --pretty=format:"%ad and %s%d").

Поэтому внутри переменной внутренние кавычки не нужны (за исключением случаев, когда вы хотите передать ее в eval).

3
28.01.2020, 02:27

Теги

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