Linux викторина №36-40: что делает команда/скрипт на изображении?

Linux викторина №36-40: что делает команда/скрипт на изображении?

 

Полученные результаты

#1. Какой код возврата (rc) будет в результате выполнения команды на изображении?

Команда:

echo "Все хорошо, но..." && { false && true; }

Описание:

  • echo “Все хорошо, но…”
    • echo всегда успешно выполняется, его код возврата ($?) равен 0.

    • Так как используется &&, выполнение продолжается.

  • { false && true; } (группировка команд в {})

    • false всегда возвращает 1.

    • && выполняет правую часть (true) только если левая (false) успешна, но так как false завершилось с ошибкой, true вообще не выполняется.

    • Код возврата группы { false && true; } будет 1.

  • Возвращаемый код всей команды

    • Так как && требует успешного выполнения всех частей, а { false && true; } вернуло 1, итоговый код возврата всей строки будет 1.

Предыдущий
Следующий

#2. Какой будет результат команды Bash на изображении выше?

Команда:

for file in *; do [ -f $file ] && echo * > $file; done

Описание:

Служебный символ * разворачивается в список имён файлов/папок в текущей директории.

  • for file in * – берёт каждый файл/папку в текущей директории;

  • [ -f $file ] – проверяет, что это файл (не папка);

  • echo * > $file – записывает в него имена всех файлов через пробел;

В итоге все файлы будут содержать одинаковый текст – список файлов текущей папки.

Предыдущий
Следующий

#3. Что выведет echo в последней команде скрипта на изображении выше?

Скрипт:

#!/bin/bash
touch -- -file
rm -f -file
ls -- -file && echo "Существует" || echo "Удалён"

Описание:

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

  • touch -- -file — создаёт пустой файл с именем ‘-file‘, при этом -- предотвращает интерпретацию -file как опции;
  • rm -f -file пытается удалить опцию -file, не файл, поэтому команда завершится ошибкой, а файл останется;
  • ls -- -file && echo "Существует" || echo "Удалён" — т.к. файл ‘-file‘ не был удалён, команда выведет "Существует".

Удалить файл корректно можно командой: rm -- './-file'.

Предыдущий
Следующий

#4. Что выведет скрипт на изображении выше?

Скрипт:

#!/bin/bash
export VAR="outer"

bash -c '
  read VAR <<< "inner"
  echo "$VAR"
'

echo "$VAR"

Описание:

Переменная VAR экспортируется и доступна во вложенной оболочке bash -c, но внутри неё read VAR <<< "inner" присваивает только в рамках вложенного процесса. Во внешнем shell переменная не меняется.

В bash оператор <<< (here-string) передаёт строку на вход (stdin) команды или программы. Аналог пайпа |, но без создания подпроцесса.

Предыдущий
Следующий

#5. Что выведет скрипт на изображении выше?

Скрипт:

#!/bin/bash

trap 'echo "Скрипт завершён"' EXIT

echo "Сообщение 1"

exit 0

echo "Сообщение 2"

Описание:

Команда exit 0 завершает скрипт до строки echo "Сообщение 2". Однако сработает trap на EXIT, который был установлен в начале. Это очень полезная техника для выполнения действий очистки или логирования при завершении работы.

Предыдущий
Проверить
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии