Я хочу проверить, существует ли скрытая папка .git. Первая мысль была использована:Почему тильда (~) не расширяется внутри двойных кавычек?
if [ -d "~/.git" ]; then
echo "Do stuff"
fi
Но -d, по-видимому, не ищет скрытые папки.
Я хочу проверить, существует ли скрытая папка .git. Первая мысль была использована:Почему тильда (~) не расширяется внутри двойных кавычек?
if [ -d "~/.git" ]; then
echo "Do stuff"
fi
Но -d, по-видимому, не ищет скрытые папки.
Проблема связана с тильдой, находящейся в двойных кавычках.
Чтобы получить его расширить, необходимо поставить тильду вне кавычек:
if [ -d ~/".git" ]; then # note tilde outside double quotes!
echo "Do stuff"
fi
Или, в качестве альтернативы, по замечанию ниже по hek2mgl, используйте $HOME
вместо ~
:
if [ -d "$HOME/.git" ]
С POSIX в Tilde expansion:
«Тильда-префикс» состоит из незаполненного ed в начале слова, за которым следуют все символы, предшествующие первому без кавычек в слове, или все символы в слове, если их нет.
С POSIX в Double Quotes:
Ограждающих символы в двойных кавычках («») сохраняет буквальное значение всех символов в двойных кавычках, за исключением знака символа доллара, кавычка и обратная косая черта, а именно:
Вы можете найти дополнительные объяснения в Why doesn't the tilde (~) expand inside double quotes? из Unix & Linux Stack.
Упс, thnx, иногда я braindead. – Swifting
Хороший ответ! В качестве альтернативы можно использовать '' $ {HOME} /. Git "'. – hek2mgl
@ hek2mgl хорошая идея! Входит в ответ, спасибо :) – fedorqui