2016-10-06 6 views
0

なぜ、このコマンドは作品:

sudo rm -rf ${server_tomcatHomeDir}temp/* 

同じながら、しかし、引用された引数と、動作しません:

sudo rm -rf "${server_tomcatHomeDir}temp/*" 

それだけ引用符に関連するかもしれないが、なぜこのコマンドはさえで動作します引用された引数:

sudo cp "$HOME/${artifact}" "${server_tomcatHomeDir}/webapps/${webapp}" 

私は理解できません。誰でも明確にすることはできますか?

最初のコマンドで引用符を使用して、グロビングと単語分割を防ぐだけです。

+0

「機能しません」 - そうではありません。指定されたディレクトリの中で '*'という名前のファイルを完全に削除することができます。 :) –

+1

'/'を 'temp'の前に入れます。 $ server_tomcatHomeDirが '/'で終わっている場合は '/'を2つ持つことは害ではありませんが、 '$ server_tomcatHomeDir'が'/'で終わっていなければ、あなたのコードは正しく動作しません。 – chepner

答えて

3

ここ*は、ファイル名にパス名展開(ゼロを含む)任意の数の文字に一致します(グロブ)トークン、で、引用符の*外に配置する必要があり、かつそれはではないが引用符の中に置かれたときに展開され、文字通りそのまま扱われます。

ドゥ:単語の分割、およびパス名展開を避けるために、ファイル名を扱う場合は特に、ほとんど常にあなたの変数を引用するのは良いアイデアです、

sudo rm -rf "${server_tomcatHomeDir}"temp/* 

注意。

1

あなたはとても

sudo rm -rf "${server_tomcatHomeDir}temp/"* 
関連する問題