findコマンドの「$@」とはどういう意味ですか? [重複]

findコマンドの「$@」とはどういう意味ですか? [重複]

最近、次のfindコマンドを使用するスクリプトを見ました。

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

ここでは何を意味しますか"$@"

答え1

"$@"シェルに渡されたすべての引数に展開されます。具体的な内容とは何の関係もありません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
$

関連情報