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:scriptCsignificado
$#
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/bashcd $1ls
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