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


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

それで、シングルクォートはグロブと変数展開を防ぎますが、ダブルクォートは変数展開のみを許可し、グロビングはできませんか?

引用パターンでグロブできますか?

回答:


26

正解です。グロブは、シングルクォートでもダブルクォートでも機能しません。ただし、二重引用符で囲まれた文字列でグロビングを補間できます。

$ echo "hello world" * .sh "goodbye world"
hello world [ファイルのリスト]さよならの世界

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)
スティーブン・ダーネル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.