Latest web development tutorials

Shell Process Control

E Java, PHP e altri linguaggi non sono le stesse, il controllo di flusso sh non è vuota, per esempio (che segue è la scrittura di controllo del processo PHP):

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

In sh / bash non può essere così in forma scritta, nessuna dichiarazione viene eseguito se il ramo altro, non scrivere questo altro.


se altro

se

se sintassi dell'istruzione:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

Una singola linea (per la riga di comando del terminale):

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

La fine del fi è invertita se la grafia in seguito incontrerà simile.

se altro

se la sintassi altro:

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

if else-if else

if else-if sintassi altro:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

I seguenti esempi determinare se due variabili sono uguali:

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

uscita:

a 小于 b

se else sono spesso usati in combinazione con comando di test come segue:

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

uscita:

两个数字相等!

per il ciclo

Come altri linguaggi di programmazione, il supporto di Shell per il ciclo.

Il formato generale del ciclo for:

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

Una sola riga:

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

Quando il valore della variabile nella lista, per ciclo che viene eseguito una volta tutti i comandi, i nomi delle variabili ottenere un elenco del valore corrente. Comando può essere qualsiasi comandi di shell e dichiarazioni valide. in lista può includere la stringa di sostituzione e il nome del file.

in lista è opzionale, se non ne fanno uso, per il riciclaggio parametri della riga di comando di localizzazione.

Ad esempio, l'ordine di uscita attuale elenco di numeri:

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

uscita:

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

Sequenziale genera una stringa di caratteri:

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

uscita:

This is a string

while

ciclo while per eseguire continuamente una serie di comandi, è anche usato per leggere i dati dal file di input; comando di solito Condizioni di prova. Il formato è:

while condition
do
    command
done

Quanto segue è una base, mentre condizioni di prova ciclo: se int è inferiore o uguale a 5, la condizione restituisce true. int inizia da zero ogni momento al trattamento ciclo, più 1 int. Eseguire lo script precedente restituisce il numero 1-5, poi terminare.

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

Eseguire lo script, uscita:

1
2
3
4
5

Utilizzare utilizzato Bash lasciare il comando, che viene utilizzato per eseguire una o più espressioni, calcoli di variabili non hanno bisogno di aggiungere $ per rappresentare variabili, in particolare gli acquirenti: comando bash lascia

.

while può essere utilizzato per leggere le informazioni di tastiera. Il seguente esempio, le informazioni ingresso è impostato al film variabile, premere <Ctrl-D> end loop.

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

Eseguire lo script, output simile al seguente:

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

Infinite loop

sintassi ciclo infinito:

while :
do
    command
done

o

while true
do
    command
done

o

for (( ; ; ))


fino ad anello

Ciclo until esegue una serie di comandi finché la condizione è vera quando fermato.

fino loop e while sull'approccio opposta.

Solitamente mentre ciclo finché migliore circolazione, ma ad un certo punto - e solo in casi rari, finché il ciclo più utile.

fino sintassi:

until condition
do
    command
done

Le condizioni possono essere qualsiasi condizioni di test, il test si verifica alla fine del ciclo, e il ciclo eseguito almeno una volta - si prega di notare questo punto.


caso

istruzione case Shell è più istruzioni SELECT. È possibile utilizzare l'istruzione caso corrisponde a un valore con un modello, se la partita va a buon fine, i comandi corrispondenti eseguire. formato istruzione case è il seguente:

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

lavori caso, come indicato sopra. Il valore deve essere seguito da una parola, ogni modello deve essere la chiusura parentesi. Il valore può essere variabile o costante. Dopo che corrispondono a un modello coerente con i valori trovati, durante il quale tutti i comandi eseguiti fino ;;.

Il valore di ogni partita rileverà un modello. Una volta che il pattern matching, pattern matching dopo l'esecuzione del comando corrispondente più continuare ad altre modalità. Se non vi è corrispondenza di un modello, utilizzare un asterisco * per acquisire il valore, e quindi eseguire il comando dietro.

Il seguente script richiede 1-4, con ogni pattern matching:

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

Inserire un contenuto diverso, ci saranno risultati diversi, come ad esempio:

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

Fuori del loop

Nel ciclo, e, talvolta, non soddisfa le esigenze costretta ad uscire dal ciclo quando la condizione di fine ciclo, Shell utilizza due comandi per implementare questa funzione: pausa e continuare.

comando break

rompere comando permette di tutti i cicli (loop termina l'esecuzione di tutti indietro).

Il seguente esempio, lo script in un ciclo infinito fino a quando l'utente inserisce un numero maggiore di 5. Per uscire da questo ciclo e tornare al prompt della shell, utilizzare il comando break.

#!/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

L'attuazione del codice di cui sopra, l'output è:

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

continuare

continuare e comando comando simile rompere, con una differenza, non saltare fuori tutti i loop, appena fuori del ciclo corrente.

Per modificare l'esempio precedente:

#!/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

Eseguire stato trovato il codice, quando il numero di ingresso superiore a 5, questo caso non si concluderà il ciclo, l'istruzione echo "gioco è finito!" Non verrà mai eseguita.


esac

Grammatica e della lingua differenze nel caso della famiglia C è grande, ci vuole un esac (caso è a sua volta) segnare la fine di ogni ramo caso con una parentesi destra, rappresentata da due punti e virgola rompono.