что вам нужно сделать, это
Все, что вам нужно сделать, это объявить файл nu выполняемым, задав:
$ chmod +x nu
а затем вы можете вызывать его посредством
$ nu
На самом деле, при выполнении команды
nu создается новый процесс интерпретатора (порожденный интерпретатор), который и выполняет команды, содержащиеся в
nu. Чтобы команда выполнялась в том же интерпретаторе, необходимо поставить перед вызовом команды точку (
.). Заметьте, что
$ . nu
выполняется быстрее, чем простой вызов
nu.
В большинстве программ надо использовать аргументы - файлы, флаги и т.д. В соответствии с синтаксисом командной строки, это можно сделать, передавая их после имени команды через пробелы.
Предположим, необходимо программу cx для установки права доступа к файлу на выполнение, так что
$ cx nu
есть сокращенная запись для
$ chmod +x nu
Создать такой сценарий не сложно. Остается только один вопрос - как получить в программе доступ к имени файла-аргумента. Для этого в командном интерпретаторе используются позиционные параметры.
При выполнении командного файла, каждое вхождение
$1 заменяется первым аргументом,
$2 - вторым и так далее до
$9.
$0 заменяется именем выполняемой команды. Поэтому, если файл
cx содержит строку
chmod +x $1
то при выполнении команды
$ cx nu
порожденный интерпретатор заменит
$1 первым аргументом команды
nu.
Значения позиционным параметрам присваиваются при вызове сценария, при вызове функции в сценарии или явно, с помощью команды
set.
Как быть, если нужно работать с несколькими аргументами, например, заставить программу
cx делать выполняемыми несколько файлов? Можно включить девять аргументов в командный файл (явно можно задавать только девять аргументов, так как конструкция
$10 распознается как "первый аргумент, за которым следует 0"):
chmod +x $1 $2 $3 $4 $5 $6 $7 $8 $9
Если пользователь такого командного файла задаст менее девяти аргументов, то оставшиеся окажутся пустыми строками и только настоящие аргументы будут переданы
chmod порожденным интерпретатором. Но такое решение не подходит, если количество аргументов превышает девять.
Содержание Назад Вперед