If-Koubou

Каква е разликата между единични и двойни котировки в Баш Shell?

Каква е разликата между единични и двойни котировки в Баш Shell? (Как да)

Затварянето на текста в кавички е доста стандартна практика на командния ред, особено когато се занимавате с файлове, които имат интервали в имената, но откъде знаете дали да използвате единични или двойни кавички? Нека да разгледаме разликата и когато трябва да използвате един срещу друг.

Общото правило е, че двойните котировки все още позволяват разширяване на променливите в кавичките, а единичните кавички не го правят. Продължавай да четеш.

Цитати с опростен текст

Ако просто включвате няколко думи от текста, няма значение коя от тях ще използвате, тъй като и двете ще работят точно по същия начин. Например, тези две команди ще създадат директория с име Test Directory:

mkdir "Test Directory"
mkdir "Test Directory"

По-опитните типове вероятно ще отбележат, че бихте могли да използвате и mkdir Test \ Directory, ако искате.

Променливо разширение на Shell

Разликата между единични и двойни кавички става по-важна, когато се занимавате с променливи на командния ред - по подразбиране bash ще разшири променлива като $ тест в пълния низ. Първо, ще определим променливата:

test = "Това е тест"

Сега можете да използвате тази променлива на командния ред, като този, който трябва просто да изведе Това е тест към конзолата:

echo $ test

Ето защо разликата между двойни и единични кавички става по-ясна - когато използвате единични кавички, променливите няма да бъдат разширени. Например, ако изпълните тази команда:

echo '$ test'

Ще видите само "$ test" на командния ред, когато използвате единични кавички, но ще се извежда правилно, когато използвате двойни кавички:

Същото нещо работи, когато използвате "знака, за да разгънете команда в командния ред. Например, кажете, че искате да използвате хората с увреждания команда от друга команда - бихте използвали буквите, за да кажете на черупката да я разшири:

echo 'pwd' / тест

Ако сте били в домашната си папка, ще видите изход, който изглежда така:

/ Начало / маниак / тест

Кажете например, че сте в папка, която има интервал в пътя и искате да използвате командата ln, за да създадете символна връзка към файл в текущата директория. Обикновено трябва да укажете пълната пътека, когато използвате командата ln, затова е много по-лесно да използвате "pwd", за да запазите въвеждането.

Вижте какво се случва, когато се опитате да използвате командата, без да въвеждате в кавички:

ln -s 'pwd' / test / home / geek / свързано име

Вместо това трябва да заобиколите в кавички:

ln -s "" pwd "/ име на файла" / some / other / path "

За по-конкретен пример, нека приемем, че имаме папка структура като този пример, където всички имена на файлове имат интервали в тях:

Тъй като командата unzip не поддържа * да се стартира срещу всички файлове, вместо това трябва да използвате командата for. Ето какво става интересно:

за f в * .zip; разкомпресирайте $ f; приключи

Ами сега! Изглежда, че не се получи.

Това, което ще трябва да направим, е да използвате двойни кавички около променливата $ f, както следва:

за ф в * .zip; разкопайте "$ f";

Сега всеки път, когато командата за команда премине през цикъла, тя действително ще изпълни команда като тази:

unzip "test 1.zip"

Разбира се, че ще претърси и ще изпълни подобна команда за всеки файл в директорията.

Нека да прегледаме

Сега, след като разгледахме примерите, ще прегледаме бързо в случай, че сте пропуснали:

Двойни котировки

  • Използвайте, когато искате да прикрепите променливи или да използвате разширение на корпуса в низ.
  • Всички знаци вътре се интерпретират като обикновени знаци, с изключение на $ или ', които ще бъдат разширени на обвивката.

Единични котировки

  • Всички знаци в единични кавички се интерпретират като низ символ.

И така завършва урока на цитатите. Използвайте ги разумно.