我将如何解释这个包含 $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

在shell脚本中,有一个概念叫做位置参数。本质上,您可以从命令行将“n”个参数传递给 shell 脚本或函数。然后它们被存储在名为$0$1$2等的特殊变量中,然后可以在 shell 脚本中访问这些变量。需要注意的一点是$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 命令末尾)。

相关内容