<Anterior | Contenido | Siguiente>
case
In golpear, el comando compuesto de opción múltiple se llama case. Tiene la siguiente sintaxis:
case palabra clave in
[patrón [| patrón] ...) comandos ;;] ...
esac
Si miramos el menú de lectura programa del Capítulo 28, vemos la lógica utilizada para actuar sobre la selección de un usuario:
#! / Bin / bash
# read-menu: un programa de información del sistema controlado por menús clear
eco "
Por favor seleccione:
1. Mostrar información del sistema
2. Mostrar espacio en disco
3. Muestra la utilización del espacio en el hogar
0. Salir "
read -p "Ingresar selección [0-3]>"
si [[$ RESPUESTA = ~ ^ [0-3] $]]; entonces si [[$ REPLY == 0]]; luego
#! / Bin / bash
# read-menu: un programa de información del sistema controlado por menús clear
eco "
Por favor seleccione:
1. Mostrar información del sistema
2. Mostrar espacio en disco
3. Muestra la utilización del espacio en el hogar
0. Salir "
read -p "Ingresar selección [0-3]>"
si [[$ RESPUESTA = ~ ^ [0-3] $]]; entonces si [[$ REPLY == 0]]; luego
echo "Programa terminado". Salida
fi
si [[$ RESPUESTA == 1]]; luego repita el tiempo de actividad de "Hostname: $ HOSTNAME"
salida
fi
si [[$ RESPUESTA == 2]]; luego df -h
salida
fi
si [[$ RESPUESTA == 3]]; luego
si [[$ (id -u) -eq 0]]; luego
echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *
más
echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME
salida fi
fi más
echo "Entrada no válida". > & 2 salida 1
fi
echo "Programa terminado". Salida
fi
si [[$ RESPUESTA == 1]]; luego repita el tiempo de actividad de "Hostname: $ HOSTNAME"
salida
fi
si [[$ RESPUESTA == 2]]; luego df -h
salida
fi
si [[$ RESPUESTA == 3]]; luego
si [[$ (id -u) -eq 0]]; luego
echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *
más
echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME
salida fi
fi más
echo "Entrada no válida". > & 2 salida 1
fi
Usando case, podemos reemplazar esta lógica con algo más simple:
#! / Bin / bash
# case-menu: un programa de información del sistema controlado por menús clear
eco "
Por favor seleccione:
1. Mostrar información del sistema
2. Mostrar espacio en disco
3. Muestra la utilización del espacio en el hogar
0. Salir "
read -p "Ingresar selección [0-3]>"
caso $ REPLY en
0) echo "Programa terminado". Salida
;;
#! / Bin / bash
# case-menu: un programa de información del sistema controlado por menús clear
eco "
Por favor seleccione:
1. Mostrar información del sistema
2. Mostrar espacio en disco
3. Muestra la utilización del espacio en el hogar
0. Salir "
read -p "Ingresar selección [0-3]>"
caso $ REPLY en
0) echo "Programa terminado". Salida
;;
1) echo "Nombre de host: $ HOSTNAME" tiempo de actividad
;;
2) df-h
;;
3) si [[$ (id -u) -eq 0]]; luego
echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *
más
echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME
fi
;;
*) echo "Entrada no válida"> & 2 salida 1
;;
esac
1) echo "Nombre de host: $ HOSTNAME" tiempo de actividad
;;
2) df-h
;;
3) si [[$ (id -u) -eq 0]]; luego
echo "Utilización del espacio doméstico (todos los usuarios)" du -sh / home / *
más
echo "Utilización del espacio doméstico ($ USER)" du -sh $ HOME
fi
;;
*) echo "Entrada no válida"> & 2 salida 1
;;
esac
La case comando mira el valor de palabra clave, en nuestro ejemplo, el valor de la RESPUESTA variable, y luego intenta compararla con una de las variables especificadas .. Cuando se encuentra una coincidencia, comandos asociados con el patrón especificado se ejecutan. Una vez que se encuentra una coincidencia, no se intentan más coincidencias.