我最近看到一个脚本,其中使用了以下 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
$