У чому різниця між одиночними та подвійними цитатами в Bash Shell?
Вкладання тексту в лапки є досить стандартною практикою в командному рядку, особливо при роботі з файлами, які мають пробіли в іменах, але як ви знаєте, чи використовувати одинарні або подвійні лапки? Давайте подивимося на різницю, і коли ви повинні використовувати один проти іншого.
Загальне правило полягає в тому, що подвійні лапки все ще дозволяють розширювати змінні в котируваннях, а окремі лапки не мають. Продовжуйте читати.
Цитати з простим текстом
Якщо ви просто вкладете кілька слів у текст, це дійсно не має значення, який саме ви використовуєте, оскільки вони будуть працювати точно так само. Наприклад, ці дві команди створить каталог з тестовим каталогом:
mkdir "Тестовий каталог"
mkdir "Тестовий каталог"
Більш досвідчені типи, ймовірно, відзначать, що ви також можете використовувати тест-каталог mkdir, якщо хочете.
Розширення змінної оболонки
Різниця між одинарними і подвійними лапками стає більш важливою, коли ви маєте справу з змінними в командному рядку за замовчуванням, bash збирається розширити змінну типу $ test на повну рядок. Спочатку ми призначимо змінну:
test = "Це тест"
Тепер ви можете використовувати цю змінну в командному рядку, подібно до цього, який повинен просто виводитися Це перевірка до консолі:
echo $ test
Тут різниця між подвійними і одинарними лапками стає більш зрозумілою - коли ви використовуєте одинарні лапки, змінні не будуть розширюватися. Наприклад, якщо ви виконуєте цю команду:
echo '$ test'
Ви не побачите нічого, крім "$ test" у командному рядку, коли ви використовуєте одинарні лапки, але він буде виводитися належним чином, коли ви використовуєте подвійні лапки:
Те ж саме працює, коли ви використовуєте символ ', щоб розгорнути команду в командному рядку. Наприклад, скажіть, що ви хочете використовувати pwd команду з іншої команди - ви повинні використовувати backticks, щоб сказати оболонці розгорнути її:
echo 'pwd' / test
Якщо ви знаходитесь у домашній теці, ви побачите такий вигляд:
/ home / geek / test
Скажімо, ви знаходитесь у папці, яка має пробіл у шляху, і ви хочете використовувати команду ln для створення символічної посилання на файл у поточному каталозі. Зазвичай потрібно вказати повний шлях при використанні команди ln, тому набагато простіше використовувати "pwd", щоб зберегти введення.
Подивіться, що відбувається, коли ви намагаєтеся скористатися командою, не вкладаючи в лапки:
ln -s 'pwd' / test / home / geek / linkedname
Замість цього ви повинні оточити в лапках:
ln -s "'pwd' / filename" / some / other / path
Для більш конкретного прикладу, припустимо, що у нас є структура папок, як цей приклад, де всі імена файлів мають пробіли в них:
Оскільки команда unzip не підтримує використання *, щоб запустити його проти всіх файлів, замість цього потрібно використовувати команду for. Ось де все цікаво:
для f in * .zip; розпакуйте $ f;
На жаль! Схоже, він не працював.
Замість цього потрібно використовувати подвійні лапки навколо змінної $ f, наприклад:
для f in * .zip; виконайте команду unzip "$ f";
Тепер кожен раз, коли команда передається через цикл, вона дійсно виконає команду, подібну до цієї:
розпакуйте "test 1.zip"
Звичайно, це було б через цикл і запустити подібну команду для кожного файлу в каталозі.
Давайте розглянемо
Тепер, коли ми проаналізували приклади, ми швидко переглянемо, якщо ви пропустили його:
Подвійні цитати
- Використовується, коли потрібно вкласти змінні або використовувати розширення оболонки всередині рядка.
- Усі символи в межах інтерпретуються як звичайні символи, за винятком $ або ', які будуть розширені на оболонці.
Одиничні котирування
- Усі символи в окремих лапках інтерпретуються як символьний рядок.
І таким чином закінчується урок цитат. Використовуйте їх розумно.