Замісні знаки всередині цитат


32

Це буде непросто, але на мої спогади, коли сценарій оболонок, використання подвійних лапок дозволить розширити глобалізацію та змінні.

Але в наступному коді:

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

Я отримую такий результат:

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

Тож одне котирування запобігає розширенню глобального AND, але подвійне котирування дозволяє лише змінне розширення, а не глобалізацію?

Чи можу я глобувати будь-яку схему цитування?

Відповіді:


26

Ви маєте рацію: глобалізація не працює ні в одно-, ні в подвійних лапках. Однак ви можете інтерполювати глобалінг за допомогою дворядкових рядків:

$ echo "привіт світ" * .sh "прощальний світ"
привіт світ [список файлів] прощай світ

6
Або навіть echo "$hello and $goodbye".*(змішайте змінні розширення, пробіли та глобус у тому ж «слові».
vonbrand

1
Підстановка чи не здається , працювати в цьому випадку echo /path/to/file/*${variable}. Як я глобую, додаючи інтерпольований електронний лист?
CMCDragonkai

2
@CMCDragonkai echo "$FOLDER_PATH"/*.extensionдобре працює для мене, всупереч прийнятій відповіді, мені довелося прибрати пробіл між "і *. Сподіваюся, це допомагає.
LostBalloon

@CMCDragonkai, @LostBalloon Я використовую таку схему, коли хочу використовувати глобуси зі змінними, які можуть мати пробіли:(cd "$FOLDER_PATH" && echo *.extension)
Стівен Дарнелл,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.