Estoy teniendo un problema para compilar un script para un trabajo, que no sé qué hacer, no suelo usar linux y seguro que tiene además más errores, pero este, aunque será una tontería no veo dónde está el error sintáctico, estoy embotado entre mysql, java, xquery y ahora esto XD
El error al que me refiero está en esta línea me dice el shell, está dentro de un case:
5) if [ "$EUID" -eq 0 ] ; then
correcto=1
while [ $correcto -eq 1 ] ; do
echo -e "Introduzca el nombre de usuarion"
read -s nombre_usuario
echo -e "Introduzca la contraeñan"
read -s contrasena
echo -e "Vuelva a introducir contraseñan"
read -s contrasena2
if [ $contrasena -eq $contrasena2 ] ; then
if [ ! getent passwd $nombre_usuario > /dev/null 2>&1 ] ; then
useradd -m -d /home/$nombre_usuario -p $contrasena $nombre_usuario
$correcto++
else echo -e "nERROR: El usuario ya existe..." fi
else echo -e "nERROR: La contraseña no coincide..." fi
done
else echo -e "nERROR: No estás registrado como administrador... "
fi ;;
6) if [ "$EUID" -eq 0 ] ; then
Este es el error:
./menu: línea 49: error sintáctico cerca del elemento inesperado `else'
./menu: línea 49: ` else echo -e "nERROR: La contraseña no coincide..." fi ;'
A ver si alguien lo ve así al vuelo o algo y puede ayudarme, al final dejo el código entero (aún no lo probé todo pero es que no avanzo de este problema) y si eso el enunciado:
ENUNCIADO:
spoiler12. Crear un Shell que muestre por pantalla el siguiente script:
- Listar archivos.
- Ver directorio de trabajo.
- Crear directorio.
- Borrar directorio.
- Crear usuario.
- Borrar usuario.
- Salir
Introducir opción:
Opciones:
- Se listan los archivos del directorio actual.
- Nombre del directorio actual.
- se solicita un nombre de un directorio y se crea dentro del directorio
actual.
- Se solicita un nombre de directorio y se borra, suponiendo que esta vacío
y ubicado en el directorio actual.
- Se comprueba si el script lo está ejecutando root, y si lo es, se solicita un
nombre de usuario (o login), una contraseña y se añade al sistema,
creando en ese momento su directorio personal, con el mismo nombre
que el login del usuario. Si el usuario no es root muestra una
advertencia y no deja crear el usuario.
- Se comprueba si el script lo está ejecutando root, y si lo es, se solicita un
nombre de usuario (o login) y se borra el usuario del sistema,
eliminando también el directorio del usuario. Si no es root, muestra una
advertencia y no permite ejecutar la operación.
- Finaliza.
spoiler#!/bin/bash
#menú
clear;
while true; do
echo -e "Que desea relizar?:n"
echo "1. Listar archivos"
echo "2. Ver directorio de trabajo."
echo "3. Crear directorio."
echo "4. Borrar directorio."
echo "5. Crear usuario."
echo "6. Borrar usuario."
echo "7. Salir"
echo -e "nIntroduce la opcion a realizar, pulsa 7 para salir: n"
read opt
carp_act=${PWD##*/}
case $opt in
1) echo -e "Contenido del directorio actual:n" && ls -l $carp_act;;
2) echo "El directorio actual es: $carp_act" ;;
3) echo -e "Introduzca el nombre del directorio a crear:n"
read -s nom_carp
carp_buscar="$carp_act/$nom_carp"
if [ ! -d $carp_buscar ] ; then
mkdir -m a=rwx $carp_buscar
else echo -e "nERROR: El directorio ya existe... "
fi ;;
4) echo -e "Introduzca el nombre del directorio a Borra:n"
read -s nom_carp
carp_buscar="$carp_act/$nom_carp"
if [ ! "$(ls -A $carp_buscar)" ] ; then
rmdir $carp_buscar
else echo -e "nERROR: El directorio contiene objetos... "
fi ;;
5) if [ "$EUID" -eq 0 ] ; then
correcto=1
while [ $correcto -eq 1 ] ; do
echo -e "Introduzca el nombre de usuarion"
read -s nombre_usuario
echo -e "Introduzca la contraeñan"
read -s contrasena
echo -e "Vuelva a introducir contraseñan"
read -s contrasena2
if [ $contrasena -eq $contrasena2 ] ; then
if [ ! getent passwd $nombre_usuario > /dev/null 2>&1 ] ; then
useradd -m -d /home/$nombre_usuario -p $contrasena $nombre_usuario
$correcto++
else echo -e "nERROR: El usuario ya existe..." fi
else echo -e "nERROR: La contraseña no coincide..." fi
done
else echo -e "nERROR: No estás registrado como administrador... "
fi ;;
6) if [ "$EUID" -eq 0 ] ; then
correcto=1
while [ $correcto -eq 1 ] ; do
echo -e "Introduzca el nombre de usuarion"
read -s nombre_usuario
if [ getent passwd $nombre_usuario > /dev/null 2>&1 ] ; then
userdel -r $nombre_usuario
let "correcto++"
else echo -e "nERROR: El usuario no existe..."
continue
fi
done
else echo -e "nERROR: No estás registrado como administrador... "
fi ;;;;
7) clear; && break ;;
*) echo -e "/nERROR: ¡¡Opción válida!!" ;;
esac
done
exit 0