Latest web development tutorials

Shell управления технологическими процессами

И Java, PHP и другие языки не то же самое, управление потоком ш не пусто, например (Ниже управления процессом PHP документ):

<?php
if (isset($_GET["q"])) {
    search(q);
}
else {
    // 不做任何事情
}

В ш / Баш может быть не так в письменной форме, ни одно заявление не выполняется, если ветвь еще, не пишите еще.


если еще

если

если синтаксиса оператора:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

Одна линия (для командной строки терминала):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

Конец Fi восстанавливается, если написание позже будет сталкиваться с аналогичными.

если еще

если другое синтаксис:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

если еще-если еще

если еще-если-то синтаксис:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

Следующие примеры определяют ли две переменные равны:

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

Выход:

a 小于 b

если в другом месте заявления часто используются в сочетании с командой тест следующим образом:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

Выход:

两个数字相等!

цикл

Как и в других языках программирования, поддержка Shell для цикла.

Общий формат для цикла:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

Одна линия:

for var in item1 item2 ... itemN; do command1; command2… done;

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

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

Например, порядок вывода текущего списка номеров:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

Выход:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

Последовательно выводит строку символов:

for str in 'This is a string'
do
    echo $str
done

Выход:

This is a string

в то время как заявление

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

while condition
do
    command
done

Ниже является основным во время тестовых условиях цикла: если INT меньше или равен 5, то условие возвращает истину. INT начинать с нуля каждый раз, когда обработка цикла, плюс 1 инт. Запустите указанный выше сценарий возвращает номер 1-5, а затем прекратить.

#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done

Запуск сценария, вывод:

1
2
3
4
5

Использование используется Bash пусть команда, которая используется для выполнения одного или нескольких выражений, переменных вычисления не нужно добавить $ представлять переменные, конкретно покупатели: Bash пусть команда

,

в то время как цикл может быть использован для чтения информации с клавиатуры. В следующем примере, входная информация задается переменной FILM, нажмите клавишу <Ctrl-D> конец цикла.

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的电影名: '
while read FILM
do
    echo "是的!$FILM 是一部好电影"
done

Запуск сценария, вывод, аналогичный следующему:

按下 <CTRL-D> 退出
输入你最喜欢的电影名: w3cschool本教程
是的!w3cschool本教程 是一部好电影

Бесконечный цикл

Бесконечные синтаксис цикла:

while :
do
    command
done

или

while true
do
    command
done

или

for (( ; ; ))


до цикла

пока цикл не выполняет ряд команд, пока условие не верно, когда остановилась.

до тех пор, пока контур и в то время как петля на противоположном подходе.

Обычно во время цикла до лучшей циркуляции, но в какой-то момент - и только в редких случаях, пока цикл более полезным.

до синтаксиса:

until condition
do
    command
done

Условия могут быть какие-либо условия испытания, испытание происходит в конце цикла, а цикл выполняется по крайней мере один раз - обратите внимание эту точку.


случай

сазе Shell более выберите заявления. Вы можете использовать сазе соответствовать значение с рисунком, если матч прошло успешно, выполнять команды, соответствующие. Формат сазе выглядит следующим образом:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

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

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

Следующий скрипт запрашивает 1-4, с каждым сопоставления с образцом:

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

Введите другое содержание, будут разные результаты, такие как:

输入 1 到 4 之间的数字:
你输入的数字为:
3
你选择了 3

Из цикла

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

перерыв команды

перерыв команда позволяет из всех циклов (цикл завершается выполнение всех сзади).

В следующем примере, сценарий в бесконечный цикл, пока пользователь вводит число больше 5. Для того, чтобы выйти из этого цикла и вернуться в командную строку, используйте команду останова.

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
        ;;
    esac
done

Реализация указанного выше кода, выход:

输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束

продолжать

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

Для того, чтобы изменить приведенный выше пример:

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue
            echo "游戏结束"
        ;;
    esac
done

Выполнить код был найден, когда входное число больше 5, то этот случай не закончится цикл, оператор эхо "Игра окончена!" Никогда не будет выполнена.


ESAC

Грамматика и языковые различия в случае С семьей велика, она занимает ESAC (случай, в свою очередь) отмечают конец каждого случая ветви с правой круглой скобкой, представленное двумя перерыв с запятой.