Команды echo и read
Назначение: Для вывода данных в сценарии можно использовать командуecho, а для считывания входной информации в переменные – командуread. Командаechoпосылает данные на стандартное устройство вывода. То же самое она делает и в сценарии. Эти данные имеют форму строки символов. Командаecho может выводить не только строковые константы, но и значения переменных. Командаreadсчитывает значение, которое должно быть присвоено переменной. Она позволяет пользователю вводить значение переменной в интерактивном режиме. Фактически командаreadчитает строку со стандартного устройства ввода. Все, что посылается на стандартный ввод с клавиатуры – вплоть до символа новой строки – считывается и присвивается в качестве значения переменной. В программах можно объединять командыechoиread. С помощью комбинации этих команд пользователю предлагается ввести значение, которое затем считывается в переменную.
Синтаксис:
$ echo текст_выражения
Опции:
echo –n,e
-n выводит только одну строку текста, которая помещается по ширине экрана
-e включает распознование символов типа \ .
Команда echo и управляющие символы:
Символ Действие при печати
\bВозврат на один симол
\cПодавление перехода на новую строку
\f Перевод страницы
\n Новая строка
\rВозврат каретки
\tСимвол табуляции
\\Обратный слэш
Примеры:
Greetvar
echoPleas enter a greeting:
readgreeting
echo“The greeting you entered was $greeting”
$greetvar
Please enter a greeting:
Hi
The greeting you entered was hi
$
В сценарии greetvarпользователю предлагается ввести значение переменнойgreetvar. Командаreadсчитывает значение, введенное пользователем, и присваивает его переменнойgreeting.
Коды завершения
Переменная shell’а?содержит код завершения последней выполненной команды.
0команда выполнена без ошибки (true)
не 0команда завершена в связи с ошибкой (false)
Примеры:
$true
$echo $?
0
$ls
$echo $?
0
$ echo $?
0
$false
$echo $?
1
$cp
Usage : cp f1 f2
...
$echo $?
1
$echo $?
0
Команда test
Назначение:Командаtestоценивает истинность выражения и формирует код завершения, т.е. фактически сравнивает две величины и, если сравнение выполнено успешно, выдает код завершения 0. С помощью командыtestможно сравнивать целые числа, строки, файлы и даже выполнять логические операции. Команда состоит из ключевого словаtestи сравниваемых величин, разделенных опцией, которая задает тип сравнения. Существуют две строковые операции, в которыхвместо опции используется оператор. При сравнении двух строк на равенство используется знак=, при сравнении на неравенство применяются знаки!=. Вместо ключевого словаtestможно использовать квадратные скобки, которые должны быть выделены разделителями: пробелами, знаками табуляции или символами новой строки (т.е. нажатием клавишиEnter). Без разделителей квадратные скобки недействительны. Не забывайте о различиях между опциями, используемыми для строк, и опциями, используемыми для целых чисел.Shellтрактует все аргументы как числа в случае, если осуществляется сравнение чисел, и все аргументы как строки, если осуществляется сравнение строк. Общим правилом является необходимость заключений в двойные кавычки всех выражений вида$переменная, что предотвращает неподходящую замену переменныхshell’ом.
Синтаксис:
$ testзначение–опциязначение
$testстрока=строка
$test–опцияимя файла
или
$[значение–опциязначение ]
$[строка=строка]
$[ -опцияимя файла]
Опции:
Сравнение целыхФункция
-gtБольше чем
-lt Меньше чем
-geБольше или равно
-le Меньше или равно
-eqРавно
-neНе равно
Сравнение строкФункция
-zПроверка на строку нулевой длины
-n Проверка на строковое значение
=Проверка на равенство строк
!=Проверка на неравенство строк
strПроверка на строку ненулевой длины
Логические операцииФункция
-а Логическое И
-оЛогическое ИЛИ
!Логическое НЕ
Тестирование файловФункция
-fИстина, если файл существует и является обычным файлом, т.е. не
каталогом и не файлом устройства
-sИстина, если файл существует и его размер больше нуля
-rИстина, если файл существует и доступен для чтения
-wИстина, если файл существует и доступен для записи
-xИстина, если файл существует и доступен для выполнения
-dИстина, если файл существует и является именно каталогом
Примеры:
$[ $X-lt7 ]
$echo$?
0
$X=abc
$[ “$X” != “abc” ]
$echo $?
1
$ test -f file или [ -f file ]
$echo $?
0
