Что делает «$ @» в сценарии bash? [дубликат]

На этот вопрос уже есть ответ здесь:

Я наткнулся на этот скрипт :

#!/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 для $ @ , но получил Шаблон не найден .

6
задан 26 March 2018 в 05:35

2 ответа

Ваш поиск, возможно, не привел ни к какому результату, потому что (поскольку 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.

11
ответ дан 23 November 2019 в 07:19

Это - внутренняя переменная, которая используется для передачи всех аргументов, переданных сценарию команде, которую сценарий называет в этом случае qemu-system-x86_64.

5
ответ дан 23 November 2019 в 07:19

Другие вопросы по тегам:

Похожие вопросы: