Скрипт listrpmpkgs, как мы успели заметить, не обладает развитыми вомзожностями. Он содержит и выполняет только одну команду. Мы не можем изменить его поведение, не написав другой скрипт.
Один из путей повышения мощности скрипта - научить его воспринимать опции командной строки. Подобно тому, как поведение утилиты rpm зависит от множества опций, мы можем изменять поведение скриптов, если сможем передавать в них информацию в виде параметров команды.
В языке shell определен ряд специальных переменных, с помощью которых можно передавать значения в сценарий. В таблице ниже перечисляются эти переменные.
| 
 Переменная  | 
 Использование  | 
| 
 $0  | 
 Хранит имя самого скрипта, полученное из командной строки  | 
| 
 $1  | 
 Первая опция  | 
| 
 $2  | 
 Вторая опция  | 
| 
 $3  | 
 Третья опция  | 
| 
 $4  | 
 Четвертая опция  | 
| 
 $5  | 
 Пятая опция  | 
| 
 $6  | 
 Шестая опция  | 
| 
 $7  | 
 Седьмая опция  | 
| 
 $8  | 
 Восьмая опция  | 
| 
 $9  | 
 Девятая опция  | 
| 
 $*  | 
 Все опции  | 
| 
 $#  | 
 Число заданных опций  | 
Если вы используете C-shell, тогда вместо $# применяется $#argv .
В контексте нашего скрипта, что можно передать команде, которую он содержит, в качестве параметра? Команда всегда ищет строки, в которых есть буквосочетание rpm. Заменив шаблон на переменную, сможем искать что угодно:
| 
 #!/bin/sh   | 
Так теперь выглядит текст скрипта и ищет он подстроки, которые будут заданы в команде после имени файла. Переименуем его в rpmgrep и запустим, например, так:
| 
 $ ./rpmgrep python   | 
($* хранит все опции командной строки в виде строки с пробелами. Но shell не поддерживает больше 9 параметров, если не использовать оператор shift, а grep не поддерживает мультишаблонный поиск, для этого есть egrep. Поэтому, если ввести несколько параметров через пробел, например, ./rpmgrep rpm python, скрипт завершит работу с сообщением об ошибке. Итог - в данном случае в параметре передается "что-то, что ввели после имени файла в виде последовательности символов, не содержащей пробелов" - прим. перев. )
 Далее - Файлы в rpm-пакетах 
 Назад - Преобразование скрипта в команду 
 Содержание