Facebook Google+


Solucionado [BASH] Dificultad para ingresar la ruta de un directorio por teclado.
#1
Hola, ¿cómo están?

Debo reconocer que es demasiada pretención para alguien que hace tan solo una semana empezo a leer sobre el lenguaje script, pero gracias a esta exigencia he encontrado mucha pero mucha información con respecto al tema, más de lo que pensaba. -

Al grano, lo que pretendo que haga el programa son 3 cosas basicamente:


1): Que se pueda elegir el directorio donde crear el script(desde el programa). -

2): Que se ingrese por teclado el nombre del script. -

3): Si es necesario se pueda crear una carpeta nueva para alojar el script. -


El problema que tengo es que al ingresar por teclado una nueva ruta nunca me lo acepta, si lo agrego directamente en la consola, está todo bien pero cuando lo hago por teclado (el texto es exactamente igual) siempre me dice que no existe. -
Bueno espero se entienda cuál es mi duda. -

Código:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-

reset
RUTA=${PWD}

echo -e "\n\n "
echo " ==============================================================================="
echo " Ruta actual....:" $RUTA
echo " Carpeta actual.: "${PWD##*/}
echo " ==============================================================================="

printf "\n Ingrese la ruta completa donde se creara el script\n"
printf " campo en blanco en la carpeta ==> ${PWD##*/}..........:"
read RUTA
if [ -n "$RUTA" ]; then
    a='"'
    NUEVARUTA=$a$RUTA$a
    if [ -d NUEVARUTA ]; then
        echo " Existe."
    else
        echo " No existe"
    fi
fi

while true
do
    printf "\n Ingrese el nombre del script (sin extención)"
    printf "\n este dato es obligatorio..............................:"
    read NOMBRE
    if [ -n "$NOMBRE" ]; then
        EXTENCION=".sh"
        NOMBRE=$NOMBRE$EXTENCION
        break    
    fi
done

printf "\n Desea crear una nueva carpeta donde se alojara el script\n"
printf " campo en blanco en la carpeta ==> ${PWD##*/}..........:"
read CARPETA
if [ -n "$CARPETA" ]; then
    echo -e "\n Se alojara en la carpeta.....: $CARPETA"
fi

exit

#cd $HOME && touch practicas.sh && chmod +x practicas.sh
#cd $HOME && echo '#!/bin/bash' > practicas.sh && echo '# -*- ENCODING: UTF-8 -*-' >> practicas.sh

Un abrazo.
Daniel
[Imagen: ip.gif] En línea
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
 
Reply
#2
Qué tal así:

Código:
#!/bin/bash

reset
echo -e "\n\n "
echo " ==============================================================================="
echo " Ruta actual....: "` pwd`
echo " Carpeta actual.: "${PWD##*/}
echo " ==============================================================================="

printf "\n Ingrese la ruta completa donde se creara el script\n"
printf " campo en blanco en la carpeta ==> ${PWD##*/}..........: "
read -r RUTA

if [ "$RUTA" ]; then
    if [ ! -d "$RUTA" ]; then
        mkdir "$RUTA"
    fi
else
    RUTA='.'
fi

while true 
do
    printf "\n Ingrese el nombre del script (sin extensión)"
    printf "\n este dato es obligatorio..............................: "
    read -r NOMBRE
    
    if [ "$NOMBRE" ]; then
        NOMBRE=$RUTA"/"$NOMBRE".sh"
        break
    fi
done

if [ -e "$NOMBRE" ]; then
    echo "Ya hay un archivo con el mismo nombre."
else
    cp ` basename "$0"`  "$NOMBRE"
fi
CUÁNDO C Y ASM UNEN SUS FUERZAS
TODA RESISTENCIA ES FÚTIL

[Imagen: 1479845315_VVrfgqsvpY2gQJz.jpg]
 
Reply
#3
Hola,  MAFUS. -

Como siempre no sé cómo agradecerte todo lo que me/nos enseñas, solo le efectué un cambio porque como lo haces me duplica el scrpt, o sea me aparece un script con el mismo texto y lo necesito en blanco. -  

Demas esta decir que pusiste cosas en el código que desconozco, ya encontrare la explicación en el amigo Google.-

Código:
touch $NOMBRE && chmod +x $NOMBRE
    echo '#!/bin/bash' > $NOMBRE && echo '# -*- ENCODING: UTF-8 -*-' >> $NOMBRE
    
    #cp ` basename "
"`  "$NOMBRE"

Saludos.
Daniel
[Imagen: ip.gif] En línea
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
 
Reply
  


Salto de foro:


Browsing: 1 invitado(s)