bashシェルでコマンドを見つけようとしています。これにより、(リスト内の$*
)パラメーターで指定されたすべての単語が現在のディレクトリに存在するかどうかを確認できます。
たとえば、このコマンドを実行すると、次のようになります。
bash ./exp_quotes.sh hadir Trex blabla
1つのコマンドでツリーワードの存在をテストし、1または0の値を取得する方法は$?
?
grepにすべてのパターンを検索するすべての仕事をさせることができます。
次のように、それらすべてをと連結する必要があります|
。
$ echo "$(IFS=\|; echo "$*")"
hadir|Trex|blabla
次に、grepを使用して検索を実行する必要があります。
$ cat ./exp_quotes.sh
#!/bin/bash
file="$1"
grep -qE "\"$(IFS=\|; echo "$*")\"" "$file" && exit 1 || exit 0
スクリプトの(実行する)権限を変更します。
$ chmod u+x ./exp_quotes.sh
そして、最初にファイル名とパターンを使用して実行します。
$ ./exp_quotes.sh file hadir Trex blabla
これは、スペースのあるパターンにも使用できます。
$ ./exp_quotes.sh "file name with spaces" "a hadir with spaces" Trex blabla
すべての単語を含むファイルをリストする必要がある場合は、次を使用します。
$ cat ./exp_quotes.sh
#!/bin/bash
grep -lE "\"$(IFS=\|; echo "$*")\"" *
「少なくとも1つの単語が見つかった場合」に終了コードを0にすることは、「1つの単語または他の単語が見つかった場合に0を終了する」と同じです。
それは次のようになります:
#!/bin/bash
infile="$1"
grep -qE "\"$(IFS=\|; echo "$*")\"" infile && exit 0 || exit 1
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加