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.