Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
Вы можете объявлять локальные переменные в функциях командной оболочки с помощью ключевого слова
local#!/bin/sh<i>sample_text="global variable" </i>foo() { local sample_text="local variable" echo "Function foo is executing"<i> echo $sample_text</i>}echo "script starting"<i>echo $sample_text</i>fooecho "script ended"<i>echo $sample_text</i>exit 0При отсутствии команды
returnВ следующем сценарии, my_name, показано, как в функцию передаются параметры и как функции могут вернуть логический результат
truefalse1. После заголовка командной оболочки определите функцию
yes_or_no#!/bin/shyes_or_no() { echo "Is your name $* ? " while true do echo -n "Enter yes or no: " read x case "$x" in y | yes ) return 0;; n | no ) return 1;; * ) echo "Answer yes or no" esac done}2. Далее начинается основная часть программы.
echo "Original parameters are $*"if yes_or_no "$1"then echo "Hi $1, nice name"else echo "Never mind"fiexit 0Типичный вывод этого сценария может выглядеть следующим образом:
$ <b>./my_name Rick Neil</b>Original parameters are Rick NeilIs your name Rick ?Enter yes or no:<b> yes</b>Hi Rick, nice name$Как это работает
Когда сценарий начинает выполняться, функция определена, но еще не выполняется. В операторе
ifyes_or_no$1Rick$1$2ifКак видите, у командной оболочки есть большой набор управляющих структур и условных операторов. Вам необходимо познакомиться с некоторыми командами, встроенными в оболочку; после этого вы будете готовы решать реальные программистские задачи без компилятора под рукой!
Команды
В сценариях командной оболочки можно выполнять два сорта команд. Как уже упоминалось, существуют "обычные" команды, которые могут выполняться и из командной строки (называемые внешними командами), и встроенные команды (называемые внутренними командами). Внутренние команды реализованы внутри оболочки и не могут вызываться как внешние программы. Но большинство внутренних команд представлено и в виде автономных программ, это условие — часть требований стандарта POSIX. Обычно, не важно, команда внешняя или внутренняя, за исключением того, что внутренние команды действуют эффективнее.
В этом разделе представлены основные команды, как внутренние, так и внешние, которые мы используем при написании сценариев. Как пользователь ОС Linux, вы, возможно, знаете много других команд, которые принимает командная строка. Всегда помните о том, что вы можете любую из них применить в сценарии в дополнение к встроенным командам, представленным в данном разделе.
Используйте команду
breakforwhileuntilbreakbreak#!/bin/shrm -rf fred*echo > fred1echo > fred2mkdir fred3echo > fred4for file in fred*do if [ -d "$file" ]; then