find 命令中的“$@”是什么意思

find 命令中的“$@”是什么意思

我最近看到一个脚本,其中使用了以下 find 命令:

find "$@" -type f -name "*.iso"

这里是什么"$@"意思?

答案1

"$@"扩展到传递给 shell 的所有参数。和具体的没有什么关系find

https://linux.die.net/man/1/bash

@

扩展到位置参数,从 1 开始。当扩展发生在双引号内时,每个参数都会扩展为一个单独的单词。即“$@”等价于“$1”“$2”...如果双引号展开出现在单词内,则第一个参数的展开与原单词的开头部分连接,并且展开最后一个参数的部分与原始单词的最后部分连接。当没有位置参数时,“$@”和$@ 扩展为空(即,它们被删除)。

下面是一个更简洁的实用+相关示例。

$ cat a.sh
#!/bin/bash -x
find "$@" -ls
$ ./a.sh foo bar blah
+ find foo bar blah -ls
15481123719088698      4 -rw-rw-rw-   1 steve    steve           4 Jun 30 19:29 foo
17451448556173323      0 -rw-rw-rw-   1 steve    steve           0 Jun 30 19:29 bar
find: ‘blah’: No such file or directory
$

相关内容