#bash #docker
#bash #docker
Вопрос:
Я пытаюсь запустить следующую команду docker exec в скрипте bash, где я передаю 2 параметра в скрипт bash. Предполагается, что команда удаляет каталоги, начинающиеся с определенной строки. Кажется, я неправильно передаю параметры:
-
Значение $container равно $ 1
-
Значение $database равно $ 2
-
$currdate устанавливается внутри скрипта bash
docker exec $container sh -c ‘rm -rf /path/to/directory/${database}-${currdate}-*/’
Комментарии:
1. 1. используйте свои переменные внутри двойных кавычек. 2. переменные внутри одинарных кавычек не интерполируются. надеюсь, это поможет.
Ответ №1:
Для интерполяции переменных необходимо использовать двойные кавычки. Одинарные кавычки ничего не интерполируют, но двойные кавычки будут.
docker exec $container sh -c "rm -rf /path/to/directory/${database}-${currdate}-*/"
Из руководства по Bash:
Заключение символов в одинарные кавычки ( '
) сохраняет буквальное значение каждого символа в кавычках. Одинарная кавычка может не встречаться между одинарными кавычками, даже если перед ними стоит обратная косая черта.
Заключение символов в двойные кавычки (
"
) сохраняет буквальное значение всех символов в кавычках, за исключением$
,`
,, и, когда расширение истории включено,
!
. Символы$
и`
сохраняют свое особое значение в двойных кавычках (см. Расширения оболочки). Обратная косая черта сохраняет свое особое значение, только если за ней следует один из следующих символов:$
,`
,"
,, или перевод строки. В двойных кавычках удаляются обратные косые черты, за которыми следует один из этих символов. Обратная косая черта, предшествующая символам без специального значения, остается неизмененной. Двойная кавычка может быть заключена в двойные кавычки, предваряя ее обратной косой чертой. Если включено, расширение истории будет выполняться, если
!
символ, заключенный в двойные кавычки, не экранируется с помощью обратной косой черты. Обратная косая черта, предшествующая!
значению, не удаляется.
Специальные параметры *
и @
имеют особое значение, когда заключены в двойные кавычки (см. Расширение параметров оболочки).