ryg

Команда условного перехода case в bash для Mac OS X

Команда условного перехода case аналогична команде switch в C/C++

Синтаксис:

	case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac

Описание:

Команда берет данные заданные в word  и сравнивает их с шаблонами заданными в pattern. После того как будет найдено совпадение, процесс сравнения прекращается и дальнейшие сравнения не производятся. Если подходящий шаблон был найден, тогда будет выполнен список команд list относящийся к данному шаблону.

Как word, так и pattern могут быть заданы переменной, арифметическим выражением, быть заключены в "кавычки", использовать тильду ~, бить командой или процессом. Сравнение производится аналогично правилам сравнения путей имени файла (читать раздел Pathname Expansion). Если при запуске интерпретатора bash в Mac OS X был установлен параметр nocasematch, то при сравнении алфавитных символов не учитывается разница межу заглавными и прописными буквами.

Возвращаемое значение равно статусу последней выполненной команды или 0 если не было найдено совпадений и никаких команд не исполнялась.

Пример 1

		
			#!/bin/bash
			# Установка строки-приглашения
			PS3='Выберите файл для обработки: ' 
			select filename in *
			do  
			    echo "Вы выбрали  $filename"
			    echo "Выбранный номер  $REPLY !"
			    break 
			done
			 
			ext=${filename##*\.}
			case "$ext" in
			    sh) echo " $filename : скрипт" ;;
			    gz) echo " $filename : архив" ;;
			    zip) echo " $filename : архив zip" ;;
			    txt) echo " $filename : текстовый файл" ;;
			    *) echo " $filename : тип файла не определен" ;;
			esac
			 

Описание синтаксиса Bash Shell

Близкие команды:

if - выполнение по условию
select - интерактивный выбор из списка 
continue - продолжить выполнение цикла
break -прервать выполнение цикла
for - другой вариант создания цикла
Весь список команд терминала OS X