ayuda comando sed shell script SO:SunOS

Iniciado por juanxo12, 10 Julio 2017, 23:25 PM

0 Miembros y 1 Visitante están viendo este tema.

juanxo12

Hola, tengo un problema con el comando sed no consigo modificar un fichero  /etc/passwd
Script tiene que cambia el directorio de conexion de un usuario
Alguna alma caritativa que conteste?
Código (bash) [Seleccionar]
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 (bash) [Seleccionar]
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