Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
spo_voprosy.docx
Скачиваний:
24
Добавлен:
20.03.2016
Размер:
465.35 Кб
Скачать

21.2. Shift through parameters.

Оператор shift может определять параметры один за другим.

kahlan@solexp11$ cat shift.ksh

#!/bin/ksh

if [ "$#" == "0" ]

then

echo You have to give at least one parameter.

exit 1

fi

while (( $# ))

do

echo You gave me $1

shift

done

Ниже приведен пример вывода этого скрипта.

kahlan@solexp11$ ./shift.ksh one

You gave me one

kahlan@solexp11$ ./shift.ksh one two three 1201 "33 42"

You gave me one

You gave me two

You gave me three

You gave me 1201

You gave me 33 42

kahlan@solexp11$ ./shift.ksh

You have to give at least one parameter.

21.3. Runtime input.

В скрипте вы можете запросить ввод от пользователя при помощи команды read.

#!/bin/bash

echo -n Enter a number:

read number

21.3. Sourcing a config file.

Source (как было показано в главах проshell) может быть использованto source файла конфигурации.

Ниже представлен пример файла конфигурации для приложения.

[paul@RHEL4a scripts]$ cat myApp.conf

# The config file of myApp

# Enter the path here

myAppPath=/var/myApp

# Enter the number of quines here

quines=5

Вот приложение, использующее этот файл.

[paul@RHEL4a scripts]$ cat myApp.bash

#!/bin/bash

#

# Welcome to the myApp application

#

. ./myApp.conf

echo There are $quines quines

Запущенное приложение может использовать значения внутри sourced файла конфигурации.

[paul@RHEL4a scripts]$ ./myApp.bash

There are 5 quines

[paul@RHEL4a scripts]$

21.5. Get script options with getopts.

Функция getopts позволяет определять варианты, данные команде. Следующий скрипт работает для любой комбинации вариантовa,fиz.

kahlan@solexp11$ cat options.ksh

#!/bin/ksh

while getopts ":afz" option;

do

case $option in

a)

echo received -a

;;

f)

echo received -f

;;

z)

echo received -z

;;

*)

echo "invalid option -$OPTARG"

;;

esac

done

Вот пример вывода верхнего скрипта. Вначале мы ввели корректные варианты, затем мы дважды ввели некорректные.

kahlan@solexp11$ ./options.ksh

kahlan@solexp11$ ./options.ksh -af

received -a

received -f

kahlan@solexp11$ ./options.ksh -zfg

received -z

received -f

invalid option -g

kahlan@solexp11$ ./options.ksh -a -b -z

received -a

invalid option -b

received –z

Вы также можете проверять варианты, которым необходим с аргументом, как показано в этом примере.

kahlan@solexp11$ cat argoptions.ksh

#!/bin/ksh

while getopts ":af:z" option;

do

case $option in

a)

echo received -a

;;

f)

echo received -f with $OPTARG

;;

z)

echo received -z

;;

:)

echo "option -$OPTARG needs an argument"

;;

*)

echo "invalid option -$OPTARG"

;;

esac

done

Вот пример вывода верхнего скрипта.

kahlan@solexp11$ cat argoptions.ksh

#!/bin/ksh

while getopts ":af:z" option;

do

case $option in

a)

echo received -a

;;

f)

echo received -f with $OPTARG

;;

z)

echo received -z

;;

:)

echo "option -$OPTARG needs an argument"

;;

*)

echo "invalid option -$OPTARG"

;;

esac

done

21.6. Get shell options with shopt.

Вы можете изменять значения переменных, контролируя поведение вариантной оболочки(optionalshell), с помощью встроенной командыshopt. Пример, представленный ниже, сначала проверяет, задан ли вариантcdspell; он не задан. Следующая командаshoptзадаёт значение, и третья командаshoptпроверяет, действительно ли задан вариант. Теперь вы можете делать небольшие ошибки написания в командеcd. Мануал поbashсодержит полный список вариантов.

paul@laika:~$ shopt -q cdspell ; echo $?

1

paul@laika:~$ shopt -s cdspell

paul@laika:~$ shopt -q cdspell ; echo $?

0

paul@laika:~$ cd /Etc

/etc

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]