На этот вопрос уже есть ответ здесь:
Я наткнулся на этот скрипт :
#!/bin/sh
qemu-system-x86_64 -enable-kvm \
-m 2G \
-device virtio-vga,virgl=on \
-drive file=/home/empty/qemubl/lab.img,format=raw,if=virtio \
-cpu host \
-smp 4 \
-soundhw sb16,es1370 \
"$@"
Какова роль $ @
?
Я искал man bash
для $ @
, но получил Шаблон не найден
.
Ваш поиск, возможно, не привел ни к какому результату, потому что (поскольку steeldriver прокомментировал) Вы не вышли $
, попытайтесь искать \$@
и Вы найдете следующее под man bash
– ПАРАМЕТРЫ – специальные параметры:
@ Expands to the positional parameters, starting from one. When
the expansion occurs within double quotes, each parameter
expands to a separate word. That is, "$@" is equivalent to "$1"
"$2" ... If the double-quoted expansion occurs within a word,
the expansion of the first parameter is joined with the
beginning part of the original word, and the expansion of the
last parameter is joined with the last part of the original
word. When there are no positional parameters, "$@" and $@
expand to nothing (i.e., they are removed).
Закрывший кавычки это расширено до $1 $2 $3 … ${N}
, заключенный в кавычки к "$1" "$2" "$3" … "${N}"
, который является тем, что Вы хотите в большинстве случаев. Это и различие к $*
очень хорош объясненный в хакерах удара Wiki.
Это - внутренняя переменная, которая используется для передачи всех аргументов, переданных сценарию команде, которую сценарий называет в этом случае qemu-system-x86_64
.