コマンド情報:
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 コマンドの最後にあります) です。