Wiki

Командные файлы

Для того, чтобы текстовый файл можно было использовать как команду, существует несколько возможностей.

Пусть с помощью редактора создан файл с именем "cmd", содержащий одну строку следующего вида:

     date; pwd; ls

Можно вызвать shell как команду (!), обозначаемую "sh", и передать ей файл "cmd", как аргумент или как перенаправленный вход, т.е.
      $  sh cmd    или     $ sh . Введенное вами число

воспринимается им не как число, а как последовательность символов(!). Интерпретор не проверяет, что вы ввели. Поэтому в качестве значения переменной может оказаться любая введенная абракадабра или просто нажатие , как значение пустой строки. (Для обеспечения проверки формата ввода следует написать свою команду).

При обращении к shell-переменной необходимо перед именем ставить символ "$". Так команды

     echo $var_2
     echo var_2

выдадут на экран
     ОС UNIX
     var_2

И еще один пример. Фрагмент командного файла:
     echo "var_2 = $var_2"

выдаст на экран
     var_2 = ОС UNIX

В команде "echo" первое использование "var_2" - это просто текст, а второе ("$var_2") - это значение соответствующей переменной.

То что здесь присутствуют пробелы между именем переменной и символом присваивания, а также между символом присваивания и
значением, так это потому, что здесь мы имеем дело лишь с текстом, куда подставлены значения переменных. Там, где действительно выполняется присваивание, пробелы в этих местах НЕДОПУСТИМЫ. Присваивание, скажем, w= означает присваивание переменной "w" пустой строки. Но и пустую строку лучше присваивать аккуратно, например w="".

Для того, чтобы имя переменной не сливалось со строкой, следующей за именем переменной, используются фигурные скобки.
Пусть

     a=/mnt/lab/asu/

тогда
     cat /mnt/lab/asu/prim

и
     cat ${a}prim

равноценны (т.е. "cat" выдаст на экран содержимое одного и того же файла).

Если также предположить, что в системе есть переменная "prim" и "prim=dir" , то команда

     echo ${a}$prim

выдаст на экран
     /mnt/lab/asu/dir