🐧 Linux  ·  20 вопросов  ·  ~45 мин  ·  ⏱ Таймер 45:00  ·  Средний  · 

Bash: переменные и условия

В Bash одна кавычка или пустая переменная способна изменить число аргументов, шаблон и ветку выполнения. Тест проверяет подстановки, параметры сценария и условия на примерах, где код выглядит правдоподобно, но ломается на пробеле, пустой строке или неожиданном статусе.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. На 20 вопросов отведено 45 минут. Не меньше половины заданий требуют разобрать команды, сценарий Bash, конфигурацию или диагностический вывод. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и краткий разбор каждого решения.
Вопрос 1 из 20
Почему запись name = value не является присваиванием в Bash?
BashТерминал
name = value
printf '%s\n' "$name"
Вопрос 2 из 20
Что меняет export MODE=prod?
BashТерминал
MODE=dev
bash -c 'printf "[%s]\n" "$MODE"'
export MODE=prod
bash -c 'printf "[%s]\n" "$MODE"'
Вопрос 3 из 20
Чем ${PORT:-8080} отличается от ${PORT-8080}?
Вопрос 4 из 20
Как однозначно добавить суффикс к переменной file?
BashТерминал
file=report
printf '%s\n' "${file}_old"
Вопрос 5 из 20
Что делает readonly ROOT=/srv/app?
Вопрос 6 из 20
Почему cp $src $dst опасен, если пути могут содержать пробелы или *?
BashТерминал
src='incoming/*.csv'
dst='Archive 2026/'
cp $src $dst
Вопрос 7 из 20
Что напечатает echo '$HOME'?
Вопрос 8 из 20
Что сохраняют двойные кавычки вокруг "$value"?
BashТерминал
value='a b *'
printf '<%s>\n' "$value"
Вопрос 9 из 20
Как безопасно передать все элементы массива files отдельными аргументами rm?
BashТерминал
files=('a b.txt' '-draft' 'c*.txt')
rm -- "${files[@]}"
Вопрос 10 из 20
Что происходит с завершающими переводами строк в $(command)?
Вопрос 11 из 20
Что содержит $# внутри сценария?
BashТерминал
printf 'argc=%d\n' "$#"
printf 'script=%s first=%s\n' "$0" "${1-}"
Вопрос 12 из 20
Почему цикл for arg in "$@" считается безопасным для аргументов?
Вопрос 13 из 20
Чем "$*" отличается от "$@"?
BashТерминал
set -- 'a b' '' 'c'
printf '<%s>\n' "$*"
printf '<%s>\n' "$@"
Вопрос 14 из 20
Сценарий получил пять позиционных параметров и выполнил shift 2. Как изменится список аргументов?
Вопрос 15 из 20
Как корректнее разобрать короткие ключи -f file -v?
BashТерминал
while getopts ':f:v' opt; do
  case $opt in
    f) file=$OPTARG ;;
    v) verbose=1 ;;
    :) printf 'нет аргумента у -%s\n' "$OPTARG" >&2; exit 2 ;;
    ?) printf 'неизвестный ключ -%s\n' "$OPTARG" >&2; exit 2 ;;
  esac
done
Вопрос 16 из 20
Как в [[ ]] сравнить целые числа 9 и 10?
BashТерминал
a=9
b=10
if [[ $a -lt $b ]]; then printf 'less\n'; fi
Вопрос 17 из 20
Что проверяет [[ -f $path ]]?
Вопрос 18 из 20
Почему [[ $name == *.log ]] работает как проверка шаблона без кавычек справа?
BashТерминал
name='app.log'
if [[ $name == *.log ]]; then echo log; fi
Вопрос 19 из 20
Как надёжнее проверить готовность команды, если она возвращает 0 при успехе?
Вопрос 20 из 20
Что удобнее для нескольких точных строковых вариантов start|stop|status?
BashТерминал
case ${1-} in
  start) start_service ;;
  stop) stop_service ;;
  status) show_status ;;
  *) printf 'usage: %s {start|stop|status}\n' "$0" >&2; exit 2 ;;
esac

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу