$ pathを含むこのgrepコマンドをどのように解釈しますか?

$ pathを含むこのgrepコマンドをどのように解釈しますか?

コマンド情報:

path=$1  # ---> I am not entirely sure what this means either
if grep -q -rHl --include \*.c --include \*.h "int main" $path 

だから私が理解しているのは、コンテンツに「int main」がある.cファイルと.hファイルを再帰的に見つけ、ファイル名もエコーしようとしているということです。

ところで、「$path」は正確に何を意味し、実行しますか?

答え1

シェルスクリプトには次の概念があります。位置パラメータ。デフォルトでは、コマンドラインで "n"個の引数をシェルスクリプトまたは関数に渡すことができます。その後$0、等という特殊変数に保存され、$1この$2変数はシェルスクリプトからアクセスできます。 1つの注目すべき点は、$0変数がスクリプト自体を参照することです。

スクリプトを例として、次のように実行できます。

./myscript.bash /opt/src-code

ここでパラメータは/opt/src-code位置変数に保存されます$1。その後、スクリプトはその値を他の変数に割り当てますpath。その後、その声明は有効ですpath=/opt/src-code

その後、この変数はpathコマンドに引数として渡されます。grep次に、実際にgrepコマンドを実行する場所を決定し、パターンマッチングを見つけます。値が返されるifことを確認するスクリプトに指定されたものがあります。grep

実際、上記の手順はgrep実行時に次のコマンドに縮小されます(該当するifステートメントは無視してください)。

grep -q -rHl --include \*.c --include \*.h "int main" /opt/src-code

答え2

パスは、コードソースに渡されたスクリプトまたは関数の最初の引数に設定されます。

(-->代わりに#をコメントとして使用)

答え3

pathただ変数です。最初の位置パラメータに値を割り当てることによって生成されます。次に、$path式をその値に置き換えます。ここで式は (grep コマンドの最後にあります) です。

関連情報