bashがパラメータを変換するのを防ぐ方法は?

bashがパラメータを変換するのを防ぐ方法は?

別のファイルを見つけるためにスクリプトの引数を使用しようとしています。問題は、コマンドラインx.*からスクリプトに引数を提供する場合x.shx.*

コマンドラインのスクリプト: 。印刷しよう./script.sh x.*とすると。$1x.sh

ベストアンサー1

スクリプト内ではこれを行うことはできません。*〜しなければならない脱出するそれ以外の場合は、ファイル名と一致しようとします(あなたの場合は、ファイル名の文字列と一致するグローバル演算子などx.)。*デフォルトでは、3つの方法でこれを実行できます。文字列を一重引用符または二重引用符で囲みます。

./script.sh "x.*"
./script.sh 'x.*'

または、問題のある文字の前にバックスラッシュを追加します。

./script.sh x.\*

Jeffがコメントで述べたように(ありがとう)、次のようにグローバル拡張を無効にすることもできます。

set -o noglob

set +o noglob必要に応じて再びオンにすることができます。

おすすめ記事