Выбор ответа Middle Bash-скрипты обновлено

"$@" против $*

Вопрос

Скрипт вызван как ./run.sh "a b" c. Сколько аргументов получит printf '%s\n' в строке printf '%s\n' "$@"?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 2: a b и c. "$@" раскрывается в аргументы по отдельности с сохранением пробелов внутри каждого.

Варианты ответа

  1. 1: все аргументы склеятся в строку
  2. 3: a, b, c
  3. 0: "$@" работает только в функциях
  4. 2: a b и cправильный ответ

Разбор

"$@" раскрывается в аргументы по отдельности с сохранением пробелов внутри каждого. "$*" дал бы одну строку a b c, а $@ без кавычек разбил бы a b на два слова, итого три. "$@" работает и в скрипте, и в функциях.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.