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