Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Script en Bash: Introducción

Script en Bash: Introducción



Para crear los archivos tipo script, podemos usar cuarquier editor (nano, gedit, geany...)
La primera linea de cada scripts que vayamos a hacer debe indicar la shell que vamos a utilizar:
#!/bin/bash ó #!/bin/sh ó etc...

La única norma que teneos que cumplir es que cada comando vaya en una linea aunque es mas quisquilloso que C, y cmo norma vamos a poner un espacio para cada cosa aunque otras cosas haya que quitarle el espacio.

-Vamos a empezar con n ls; escribimoe en nano:
#!/bin/bas
ls
  • Es típico que los scripts tengan extensión .sh, aunque esto esta en deshuso y no hace falta guardarlo con ninguna extension anque hay que guardarlo en algun sitio que tengamos definido en la variable $PATH.
    Por ejemplo lo guardamos en /home/usuario/bin, y lo llamaos “mils”. Abrimos el terminal y nos vamos al directorio bin del usuario y le vamos a poner el permiso de ejecución a nuestro scripts mils.
  • Lo normales dar permiso de ejecucion para todos: usuario / grupo / otros.
    Escribimos chmod a+x mils(all+x, podia ser tambien u+x para usuario y g+x para grupo solo). Y a continuacion escribieremos mils para ejecutarlo, dandonos el resutlado de un ls.
  • Una cosa que hay que tener en cuenta es que los cambios que se hagan con el scripts (por ejemplo cambiar de directorio), cuando termina el script, vuelve a su sitio la terminal o a su estado anterior.
  • Para gestionar los argumentos, con C teniamos argv y argv, en un script tenemos disponible un equivalente que seria:
    script
    C
    significado
    $#
    Argc
    Numeros de palabras introducidas
    $*
    Argv
    se considera un unco argumento de la lista de argumentos
    $@
    Argv
    se considera una lista de argumentos
    $0


    La posicion es opcional
    $1
    argv[n]


    $2




    $3




    $4




En teoria habria que poner entre {} el número, siempre es aconsejable para evitar problemas (por ejmplo ${10})

Para comprender el significado de casa cosa, escribiremos en un script, llamado p.sh:
#!/bin/bash
echo $# → numero de palabras sin contar con el programa
echo $* → lista de palabras escritas seguidas
echo $@ → lista de palabras escritas seguidas
echo $0 → ruta donde esta y nombre el archivo



  • Para verificar que lo que hace el script no modifica la terminal escribimos:
    #!/bin/bash
    cd $1
    ls

Si escribimos .. nos hace un cd al directorio anterior y un ls de ese escritorio, pero cuando termina el script vuelve al directorio donde estaba antes de ejecutarse.

El uso de “ “ en un script:
Es un script todo en un principio es de tipo texto, aunque su contenido sea un número. Si escribirmos (en p.sh):
#!/bin/bas
echo “$1 $2”
echo $1 $2
Notaras que no es lo mismo cuando ejecutamos el script: ./p.sh Palabra1 Palabra2

Resultado:
“$1 $2”
Palabra 1 palabra 2
$1 $2
Palabra 1 palabra 2

Si escribimos en nuestro script:
echo “$1 vale $1”
echo $1 vale $1
echo '$1' vale $1


Las comillas blandas (“) hacen la expansión de variable, y la duras (') hacen lo que se pone entre ellas.

Otro ejemplo de uso de comillas:
#!/bin/bash
FICHERO=”foto”
echo $FICHERO.jpg
Nos muestra foto.jpg, si ponemos $FICHERO1.jpg no reconoce FICHERO1, y nos muestra .jpg, por lo que tenemos que poner ${FICHERO}1.jpg, para que aparezca foto1.jpg

La forma de evitar ambigüedades en variables de encadenadas con estro es escribirlas entre llaves {}.

Para asignar un comando a una variable que podamos usar en un script sin que se muestre el resultado lo pondriamos asi:
RESUL_LS=$(LS) → asigna el contenido de ls a RESUL_LS
echo RESUL_LS → nos mostrara el contenido de la variable

Otra forma seria:
COMANDO=LS
RESUL_COMANDO=$($COMANDO) → $(LS)=RESUL_COMANDO
echo $RESUL_COMANDO

Este método es mejor por si tienes que cambiar el comando ls, porque esta mas visible la declaracion comando: COMANDO=LS ó podemos poner COMANDO=”ls -l”





No hay comentarios:

Publicar un comentario en la entrada