Linux Labs

Bash: обработка текста и скрипты / Ступень 5 из 9

Аргументы, кавычки и проверка файлов

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 1 из 7 · на машине · 4 мин

Файл с пробелом в имени

Чему научишься

  • Передавать скрипту имена с пробелами и сохранять их внутри через "$1" и "$@".
  • Проверять путь условием до работы с ним — тип, право на чтение, размер.
  • Отвечать кодом завершения и сообщением в поток ошибок, когда скрипт вызвали неправильно.

Скрипт report.sh считает строки в файлах, которые ему передали. С notes.txt он справляется. Теперь нужно посчитать строки в my file.txt. В имени пробел, поэтому ты берёшь его в кавычки, как в уроке «Справка и оболочка».

Упражнение · посмотреть

Передай скрипту имя с пробелом

Ты в ~/args-lab. Посчитай строки скриптом report.sh: сначала в notes.txt, потом в «my file.txt» — имя в кавычках.

Сначала предположи

В «my file.txt» три строки, имя взято в кавычки. Что напечатает ./report.sh "my file.txt"?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Проверь себя 1 вопрос

Почему имя распалось на my и file.txt, хотя ты взял его в кавычки?

  • ls показывает один файл my file.txt. Файлов my и file.txt нет — поэтому wc о них и сообщил.

  • Кавычки ничего не меняют в имени, они держат его одним словом. ls показывает файл my file.txt с пробелом.

  • wc -l "my file.txt" в терминале печатает 3 my file.txt: получив имя целиком, wc открыл файл.

Имя дошло до report.sh одним аргументом, а внутри скрипта снова распалось.

Ubuntu 24.04
Загрузка…