次のdockerexecコマンドをbashスクリプトで実行しようとしています。ここで、2つのパラメーターをbashスクリプトに渡します。このコマンドは、特定の文字列で始まるディレクトリを削除することになっています。パラメータを正しく渡していないようです:
$ containerは$ 1に設定されています
$ databaseは$ 2に設定されています
$ currdateは、bashスクリプトの内部で設定されます
docker exec $ container sh -c'rm -rf / path / to / directory / $ {database}-$ {currdate}-* / '
変数を補間するには、二重引用符を使用する必要があります。一重引用符は何も補間しませんが、二重引用符は補間します。
docker exec $container sh -c "rm -rf /path/to/directory/${database}-${currdate}-*/"
Bashマニュアルから:
文字を一重引用符('
)で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが前に付いている場合でも、一重引用符の間に一重引用符がない場合があります。
(二重引用符で文字を囲む
"
)を除いて、全ての文字のリテラル値を保持し$
、`
、\
、履歴展開が有効になっている場合、および!
。文字$
と`
その特別な意味は二重引用符で囲みます(シェル拡張を参照)。次のいずれかの文字が続いたときにバックスラッシュが唯一のその特別な意味を保持:$
、`
、"
、\
、または改行。二重引用符内で、これらの文字の1つが後に続く円記号は削除されます。特別な意味のない前の文字の円記号は変更されません。二重引用符は、その前に円記号を付けることにより、二重引用符内で引用できます。有効に!
すると、二重引用符で囲まれた部分が円記号を使用してエスケープされない限り、履歴の展開が実行されます。の前の円記号!
は削除されません。
特別なパラメーターは、二重引用符で囲む*
と@
特別な意味を持ちます(シェルパラメーターの拡張を参照)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加