Latest web development tutorials

Control del proceso de Shell

Y Java, PHP y otros lenguajes no son los mismos, el control de flujo sh no está vacío, por ejemplo (El siguiente es el control del proceso de escritura PHP):

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

En sh / bash no puede ser por escrito, ninguna declaración se ejecuta si la rama más, no escribir esta cosa.


si otra cosa

si

si sintaxis de la sentencia:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

Una sola línea (por línea de comandos de terminal):

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

El final de la ficción se invierte si la ortografía más tarde se encontrará con similar.

si otra cosa

si la sintaxis otra cosa:

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

si otra cosa, si otra cosa

si otra cosa, si la sintaxis otra cosa:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

Los siguientes ejemplos determinar si dos variables son iguales:

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

salida:

a 小于 b

else si se utilizan a menudo en combinación con la orden de prueba de la siguiente manera:

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

salida:

两个数字相等!

para el bucle

Al igual que otros lenguajes de programación, soporte de Shell para el bucle.

El formato general del bucle for:

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

Una sola línea:

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

Cuando el valor de la variable en la lista, para el bucle que se ejecuta una vez que todos los comandos, los nombres de variables obtener una lista del valor actual. Comando puede ser cualquier comandos de shell y declaraciones válida. en la lista puede incluir la cadena de reemplazo y el nombre del archivo.

en la lista es opcional, si no lo utiliza, para el reciclaje de los parámetros de línea de comandos de ubicación.

Por ejemplo, el orden de salida de la lista actual de números:

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

salida:

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

Secuencialmente da salida a una cadena de caracteres:

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

salida:

This is a string

while

mientras bucle para ejecutar de forma continua una serie de comandos, sino que también se utiliza para leer los datos desde el archivo de entrada; comando por lo general condiciones de prueba. El formato es:

while condition
do
    command
done

El siguiente es un básico, mientras que las condiciones de prueba de bucle: si int es inferior o igual a 5, la condición devuelve true. int empezar desde cero cada vez que el bucle de procesamiento, más 1 int. Ejecute la secuencia de comandos anterior devuelve el número 1-5, y luego terminar.

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

Ejecutar el script, salida:

1
2
3
4
5

Uso usa Bash deja de comandos, que se utiliza para llevar a cabo una o más expresiones, cálculos de variables no es necesario añadir $ para representar las variables, específicamente los compradores: comandos Bash te permite

.

mientras bucle se puede utilizar para leer la información del teclado. En el siguiente ejemplo, la información de entrada se ajusta a la película de la variable, pulse <Ctrl-D> fin de bucle.

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

Ejecutar el script, una salida similar a la siguiente:

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

bucle infinito

sintaxis bucle infinito:

while :
do
    command
done

o

while true
do
    command
done

o

for (( ; ; ))


hasta el bucle

hasta el bucle se ejecuta una serie de comandos hasta que la condición es verdadera cuando se detuvo.

hasta el bucle y bucle while en el enfoque opuesto.

Por lo general, mientras que bucle hasta una mejor circulación, pero en algún momento - y sólo en casos raros, hasta que el ciclo más útil.

hasta sintaxis:

until condition
do
    command
done

Las condiciones pueden ser las condiciones de la prueba, la prueba se realiza al final del ciclo, y el bucle ejecutado al menos una vez - por favor tenga en cuenta este punto.


caso

declaración del caso de Shell es más instrucciones select. Puede utilizar la instrucción case coincide con un valor con un patrón, si el partido tiene éxito, ejecutar comandos a juego. formato de declaración de caso es el siguiente:

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

el trabajo de casos como se muestra arriba. El valor debe ser seguido por una palabra en, cada modelo debe paréntesis de cierre. El valor puede ser variable o constante. Después de hacer coincidir un patrón consistente con los valores encontrados, durante el cual todos los comandos ejecutados hasta ;;.

El valor de cada partido detectar un patrón. Una vez que la coincidencia de patrones, patrón de coincidencia después de ejecutar el comando correspondiente ya no seguir a otros modos. Si no hay una coincidencia de un patrón, use un asterisco * para capturar el valor, y luego correr detrás de la orden.

La siguiente secuencia de comandos solicita 1-4, con cada coincidencia de patrones:

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

Introduzca un contenido diferente, habrá resultados diferentes, tales como:

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

Fuera del circuito

En el ciclo, y en ocasiones no se ajusta a las necesidades forzados fuera del circuito cuando la condición de fin de bucle, Shell utiliza dos comandos para implementar esta característica: break y continue.

comando break

romper comando permite a cabo de todos los bucles (loop termina la ejecución de toda la espalda).

En el siguiente ejemplo, la secuencia de comandos en un bucle infinito hasta que el usuario introduce un número mayor que 5. Para salir de este ciclo y volver a la línea de comandos, utilice el 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

Aplicación del código anterior, la salida es:

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

continuar

continuar y romper comando comando similar, pero con una diferencia, no saltar de todos los bucles, justo fuera del ciclo actual.

Para modificar el ejemplo anterior:

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

Se encontró ejecutar el código, cuando el número de entrada superior a 5, este caso no va a terminar el ciclo, que la orden echo "juego ha terminado!" No se ejecutará.


esac

diferencias gramaticales y lingüísticas en el caso de la familia C es grande, se necesita un ESAC (caso es a su vez) marcar el final de cada rama caso con un paréntesis de cierre, representada por dos punto y coma rompen.