Script tiene que cambia el directorio de conexion de un usuario
Alguna alma caritativa que conteste?
Código
if [ $# -ne 3 ] then echo "uso:" $0 "<Usuario> <Nombre> <Directorio>" exit 1 fi if [ ! -d "$3" ] #comprueba si ruta dada existe then echo "El directorio no existe" exit 1 fi st=`grep "$1" /etc/passwd | grep "$2" |cut -f6 -d":"` if [ -z "$st" ] #comprueba si vaiable st esta vacia then echo "El usuario no existe" exit 1 fi echo "Quiere cambiar el directorio de conexion de " $1 "actualmente" $st "a" $3 "(S/N)?" read op case $op in [sS]) echo "Modificando fichero..." sed '/"$1"/ s/"$st"/"$3"/g' /etc/passwd >newfile #no funciona echo "Fichero modificado" ;; *) echo "El fichero no sera modificado" exit 1 ;; esac
edito parece que ya funciona.
Sed permite utilizar mas delimitadores pongo el codigo por si alguien tiene el mismo problema
Código
if [ $# -ne 3 ] then echo "uso:" $0 "<Usuario> <Nombre> <Directorio>" exit 1 fi if [ ! -d "$3" ] #comprueba si ruta dada existe then echo "El directorio no existe" exit 1 fi st=`grep "$1" /etc/passwd | grep "$2" |cut -f6 -d":"` if [ -z "$st" ] #comprueba si vaiable st esta vacia then echo "El usuario no existe" exit 1 fi echo "Quiere cambiar el directorio de conexion de " $1 "actualmente" $st "a" $3 "(S/N)?" read op case $op in [sS]) echo "Modificando fichero..." sed "/$1/ s+$st+$3+g" /etc/passwd >newfile echo "Fichero modificado" echo `grep "$1" newfile | grep "$2" |cut -f6 -d":"` ;; *) echo "El fichero no sera modificado" exit 1 ;; esac