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

20.2. Если, затем, иначе (if then else)

if then else это конструкции выбора.ifопределенное условие,thenвыполнить что-то,elseисполняем что-то другое. В приведенном ниже примере проверяем, существует ли файл, и если файл существует, то соответствующее сообщение будет отображено.

#!/bin/bash

if [ -f isit.txt ]

then echo isit.txt exists!

else echo isit.txt not found!

fi

Если мы назовём этот скрипт как «выбор», то он работает, как этот.

[paul@RHEL4a scripts]$ ./choice

isit.txt not found!

[paul@RHEL4a scripts]$ touch isit.txt

[paul@RHEL4a scripts]$ ./choice

isit.txt exists!

[paul@RHEL4a scripts]$

20.3. If then elif

Вы можете вложить внутрь elseновыйif, с помощьюelif. Вот простой пример.

#!/bin/bash

count=42

if [ $count -eq 42 ]

then

echo "42 is correct."

elif [ $count -gt 42 ]

then

echo "Too much."

else

echo "Not enough."

fi

20.4. For loop

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

for i in 1 2 4

do

echo $i

done

Пример цикла в сочетании со встроенной оболочкой.

#!/bin/ksh

for counter in `seq 1 20`

do

echo counting from 1 to 20, now at $counter

sleep 1

done

Примера выше можно написать без встроенной оболочки, используя Bash {от .. до} границы.

#!/bin/bash

for counter in {1..20}

do

echo counting from 1 to 20, now at $counter

sleep

Этот цикл использует файл подстановки (от расширения оболочки). Ввод инструкции в командной строке имеет одинаковую функциональность.

kahlan@solexp11$ ls

count.ksh go.ksh

kahlan@solexp11$ for file in *.ksh ; do cp $file $file.backup ; done

kahlan@solexp11$ ls

count.ksh count.ksh.backup go.ksh go.ksh.backup

20.5. While loop

Ниже приведен простой пример while loopцикла.

i=100;

while [ $i -ge 0 ] ;

do

echo Counting down, from 100 to 0, now at $i;

let i--;

done

Бесконечный цикл может быть сделан с помощью while true илиwhile : , где двоеточие является эквивалентом операции «нет» в оболочкахKornиBash.

#!/bin/ksh

# endless loop

while :

do

echo hello

sleep 1

done

20.6. until loop

Ниже приведен простой пример until loopцикла.

let i=100;

until [ $i -le 0 ] ;

do

echo Counting down, from 100 to 1, now at $i;

let i--;

done

to parse – определять

option – вариант

Глава 21 Sсript parameters.

21.1 Script parameters.

Скрипт bash shell может иметь параметры. Нумерация, которую вы видите в скрипте, приведенном ниже, продолжится, если у вас будет больше параметров. Также есть специальные параметры, содержащие количество параметров, строку из всех параметров, а такжеprocessidи код возврата. В мануале по bash приведен полный список.

#!/bin/bash

echo The first argument is $1

echo The second argument is $2

echo The third argument is $3

echo \$ $$ PID of the script

echo \# $# count arguments

echo \? $? last return code

echo \* $* all the arguments

Ниже представлен результат работы скрипта сверху.

[paul@RHEL4a scripts]$ ./pars one two three

The first argument is one

The second argument is two

The third argument is three

$ 5610 PID of the script

# 3 count arguments

? 0 last return code

* one two three all the arguments

Ещё раз тот же скрипт, только с 2-мя параметрами.

[paul@RHEL4a scripts]$ ./pars 1 2

The first argument is 1

The second argument is 2

The third argument is

$ 5612 PID of the script

# 2 count arguments

? 0 last return code

* 1 2 all the arguments

[paul@RHEL4a scripts]$

Вот другой пример, в котором мы используем $0. Параметр $0 содержит имя скрипта.

paul@debian6~$ cat myname

echo this script is called $0

paul@debian6~$ ./myname

this script is called ./myname

paul@debian6~$ mv myname test42

paul@debian6~$ ./test42

this script is called ./test42

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