コマンドライン引数としてオプションを見つける

コマンドライン引数としてオプションを見つける

スクリプトに問題があります。コマンド find のオプションが最初のコマンド ライン引数となるスクリプトを作成しようとしています。

私のスクリプトには次のようなものがあります

find_option=$1

find $find_option

問題は、たとえば find オプションの場合、*.txt出力はディレクトリ内の最初のテキスト ファイルだけであるが、そのようなファイルをすべて検索したいということです。

ありがとう

答え1

スクリプトに次のようなパターンを与えると仮定すると、

./myscript '*.txt'

(パターンが現在のディレクトリ内の名前に拡張されるのを避けるために引用符が必要です)、次のようにスクリプトを記述できます。

#!/bin/sh

name_pattern=$1

find . -name "$name_pattern"

これは最初のコマンドライン引数を受け取り、 の呼び出しでそれを使用してfind、現在のディレクトリおよびそれ以下のディレクトリで見つかった名前を指定されたパターンでフィルタリングします。

ここでも、スクリプトを呼び出すときにコマンド ラインで引用符$name_patternで囲む必要があったのと同じ理由で、呼び出しでのの変数展開findを引用符で囲む必要があることに注意してください。つまり、パターンが現在のディレクトリ内の名前に展開されるのを避けるためです。

関連情報