Каква е разликата между единични и двойни цитати в Bash Shell?
Ограждащият текст в кавички е доста стандартна практика в командния ред, особено когато става въпрос за файлове, които имат интервали в имената, но как да знаете дали да използвате единични или двойни кавички? Нека да разгледаме разликата и кога трябва да използвате една срещу друга.
Общото правило е, че двойните кавички все още позволяват разширяване на променливи в кавичките, а единичните кавички не. Продължавай да четеш.
Цитати с прост текст
Ако просто затваряте няколко думи от текста, наистина няма значение кой ще използвате, тъй като и двата ще работят точно по същия начин. Тези две команди например ще създадат директория, наречена Test Directory:
mkdir "Тестова директория"
mkdir „Тестова директория“
По-опитните типове вероятно ще отбележат, че можете да използвате и тестовата директория на mkdir, ако искате.
Shell променлива експанзия
Разликата между единични и двойни кавички става по-важна, когато се занимавате с променливи в командния ред по подразбиране, bash ще разшири променлива като $ test в пълния низ. Първо ще присвоим променливата:
test = "Това е тест"
Сега можете да използвате тази променлива в командния ред, като този, който просто трябва да изведе Това е тест към конзолата:
echo $ test
Ето къде разликата между двойните и единичните кавички става по-ясна - когато използвате единични кавички, променливите няма да се разширяват. Например, ако изпълните тази команда:
echo '$ test'
В командния ред няма да видите нищо друго освен "$ test", когато използвате единични кавички, но ще се извежда правилно, когато използвате двойни кавички:
Същото се случва, когато използвате символа, за да разширите командата в командния ред. Например, кажете, че искате да използвате хората с увреждания командата от друга команда - бихте използвали backticks, за да укажете на черупката да го разшири:
echo 'pwd' / тест
Ако сте били в началната си папка, ще видите изход, който изглеждаше по следния начин:
/ Начало / маниак / тест
Кажете например, че се намирате в папка, която има интервал в пътя и искате да използвате командата ln, за да създадете символична връзка към файл в текущата директория. Обикновено трябва да посочите пълния път, когато използвате командата ln, така че е много по-лесно да използвате „pwd“, за да запазите въвеждането.
Вижте какво се случва, когато опитате да използвате командата, без да я заграждате в кавички:
ln -s 'pwd' / test / home / geek / linkedname
Вместо това трябва да заобиколите в кавички:
ln -s "'pwd' / filename" / някой / друг / път
За по-конкретен пример нека предположим, че имаме структура на папките като този пример, където всички имена на файлове имат интервали в тях:
Тъй като командата unzip не поддържа използването на * за да я стартира срещу всички файлове, вместо това ще трябва да използвате командата for. Ето къде става нещо интересно:
за f в * .zip; разархивирайте $ f;
Ами сега! Изглежда, че не работи.
Вместо това трябва да използваме двойни кавички около променливата $ f, като тази:
за f в * .zip; разархивирайте "$ f";
Сега всеки път, когато командата за команда преминава през цикъла, тя действително ще изпълни команда като тази:
разархивирайте "test 1.zip"
Разбира се, че ще премине и изпълни подобна команда за всеки файл в директорията.
Нека разгледаме
Сега, след като прегледахме примерите, ще прегледаме бързо, в случай че сте го пропуснали:
Двойни цитати
- Използвайте, когато искате да заключите променливите или да използвате разширение на обвивката в низ.
- Всички знаци в рамките на интерпретират се като обикновени символи с изключение на $ или ', които ще бъдат разширени върху черупката.
Единични цитати
- Всички символи в единични кавички се интерпретират като символен низ.
И така завършва урока на цитатите. Използвайте ги разумно.