web-dev-qa-db-ja.com

引用符内のワイルドカード

これは簡単な方法ですが、私の記憶では、シェルスクリプトで二重引用符を使用すると、グロビングと変数を拡張できます。

しかし、次のコードでは:

#!/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

したがって、単一引用符はグロブと変数の展開を防ぎますが、二重引用符は変数の展開のみを許可し、グロビングは許可しませんか?

どのような引用パターンでもグロブできますか?

33
tisek

あなたは正しいです:グロビングは一重引用符でも二重引用符でも機能しません。ただし、二重引用符で囲まれた文字列を使用してグロビングを補間できます。

 $ echo "hello world" * .sh "goodbye world" 
 hello world [ファイルのリスト] goodbye world 
27
Flup