Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

Заметьте, что параметр $0 также позволяет получить путь доступа к текущему каталогу. Для получения названия сценария предварите параметр $0 командой

basename.

$ pg param2

#!/bin/sh

echo "Hello world this ls `basename $0` calling"

$ param2

Hello world this ls param2 calling

14.4.2. Передача параметров в системные команды

Параметры можно передавать внутри сценария в системную команду. В следующем примере используется команда find . Параметр $1 указывает имя искомого файла.

$ pg findfile

#!/bin/sh

# findfile

find / -name $1 -print

$ findfile passwd

/etc/passwd

/etc/uucp/passwd

/usr/bin/passwd

Ниже приводится другой пример. В виде параметра $1 файл user-id передается команде grep; команда grep использует эти сведения для поиска файла passwd, где содержится полное имя пользователя.

$ pg who_is

#!/bin/sh

# who_is

grep $1 passwd | awk -F: {print $4}'

$ who_is seany

Seany Post

14.4.3. Специальные параметры

Теперь, когда вы изучили, как получить доступ к параметрам shell–сценариев и применять их, было бы полезным узнать об этих параметрах больше. Рассмотрим, каким образом сценарий применяет специальные параметры. Существует семь специальных параметров, которые представлены в табл. 14.2.

Таблица 14.2. Специальные параметры интерпретатора shell

$#

Число аргументов, передаваемых сценарию

$*

В отдельной строке отображаются все аргументы, которые передаются сценарию. Здесь может содержаться более девяти параметров, в отличие от позиционных параметров

$$

Текущий идентификатор PID для выполняющегося сценария

$!

Идентификатор PID для последнего процесса, который выполняется в фоновом режиме

$@

Означает то же самое, что и параметр $#, но, если параметр заключен в кавычки, то и каждый аргумент отображается в кавычках

$-

Отображение текущих опций интерпретатора команд; аналогично применению команды set

$?

Показывает код завершения последней команды. Значение 0 свидетельствует об отсутствии ошибок, любое другое значение -o, их наличии

Преобразуем сценарий param, применяя некоторые специальные параметры. Затем выполним сценарий.

$ pg param

#!/bin/sh

# все параметры

echo "This ls the script name : §0"

echo "This ls the first parameter : $1"

echo "This is the second parameter : $2"

echo "This ls the third parameter : $3"

echo "This ls the fourth parameter : $4"

echo "This ls the fifth parameter : $5"

echo "This ls the sixth parameter : $6"

echo "This ls the seventh parameter : $7"

echo "This ls the eighth parameter : $8"

echo "This ls the ninth parameter : $9"

echo "The number of arguments passed : $#"

echo "Show all arguments : $*"

echo "Show me my process ID : $$"

echo "Show me the arguments in quotes :" "$@"

echo "Did my script go with any errors : $?"

$ param Merry Christmas Mr Lawrence

This ls the script name : ./param

This ls the first parameter : Merry

This ls the second parameter : Christmas

This ls the third parameter : Mr Lawrence

This ls the fourth parameter :

This ls the fifth parameter :

This ls the sixth parameter :

This ls the seventh parameter ;

This ls the eighth parameter :

This ls the ninth parameter :

The number of arguments passed ;3

Show all arguments : Merry Christmas Mr Lawrence

Show me my process ID : 630

Show me the arguments in quotes :"Merry" "Christmas" "Mr Lawrence"

Did my script go with any errors :0

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

  • Читать дальше
  • 1
  • ...
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win