最近、次の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
$