Entre los interpretes mas comunes esta el '/bin/bash', interprete bajo el cual se trata esta entrada.
Hagamos una pequena introduccion, empecemos escribiendo un archivo simple:
admin escribió: |
#!/bin/bash # Esto es un comentario echo "Hola " $USER ", es un placer verlo por aqui!" echo "Usted se encuentra en: " $PWD echo "La fecha de hoy es: "`date +"%d/%m/%Y"` |
Ahora almacenas esto en un archivo llamado 'ejemplo1.sh', entonces tendras un simple shell script. Puedes correrlo de las cuatro formas siguientes:
1)Usando el comando source:
admin escribió: |
fred@test:~> source ejemplo1.sh Hola fred, es un placer verlo por aqui! Usted se encuentra en: /home/fred La fecha de hoy es: 05/05/1994 |
2)Usando el punto como el comando source:
admin escribió: |
fred@test:~> . ejemplo1.sh Hola fred, es un placer verlo por aqui! Usted se encuentra en: /home/fred La fecha de hoy es: 05/05/1994 |
3)Usando el comando bash
admin escribió: |
fred@test:~> bash ejemplo1.sh Hola fred, es un placer verlo por aqui! Usted se encuentra en: /home/fred La fecha de hoy es: 05/05/1994 |
4)Haciendo ejecutable:
admin escribió: |
fred@test:~> chmod a+x ejemplo1.sh fred@test:~> ./ejemplo1.sh Hola fred, es un placer verlo por aqui! Usted se encuentra en: /home/fred La fecha de hoy es: 05/05/1994 |
Continuando les anexo aqui otro ejemplo:
admin escribió: |
#! /bin/bash for i in 1 2 3 4 5 do echo $i done -------- fred@test:~> chmod a+x ejemplo2.sh fred@test:~> ./ejemplo2.sh 1 2 3 4 5 |
Aqui les doy otro ejemplo:
admin escribió: |
#! /bin/bash for i in *.html do grep -i \<title\> $i >> tittles.list done -------- fred@test:~> chmod a+x ejemplo3.sh fred@test:~> ./ejemplo3.sh <title>Yahoo! Telemundo</title> |
Para hacer funciones:
admin escribió: |
#!/bin/bash function Imprimir(){ echo $1 } Imprimir "Hola Mundo" -------- fred@test:~> chmod a+x ejemplo4.sh fred@test:~> ./ejemplo4.sh Hola Mundo |
Para leer datos de parte del usuario hay cuatro formas:
1) Usando read:
admin escribió: |
#!/bin/bash read -p "Ingrese un valor: " -e input echo "Su valor es: '$input'" -------- fred@test:~> ./ejemplo5.sh Ingrese un valor: 6 6 |
2) Usando dialog:
admin escribió: |
#!/bin/bash dialog --inputbox \ "Escriba un valor: " 0 0 2> /tmp/inputbox.tmp.$$ retval=$? input=`cat /tmp/inputbox.tmp.$$` rm -f /tmp/inputbox.tmp.$$ case $retval in 0) echo "Su valor es: '$input'";; 1) echo "Cancelo la operacion.";; esac -------- fred@test:~> ./ejemplo6.sh <--Aun no e hecho las imagenes--> |
3) Usando Xdialog:
admin escribió: |
#!/bin/bash Xdialog --title "INPUT BOX" --inputbox \ "Escriba un valor: " 0 0 2> /tmp/inputbox.tmp.$$ retval=$? input=`cat /tmp/inputbox.tmp.$$` rm -f /tmp/inputbox.tmp.$$ case $retval in 0) echo "Su valor es: '$input'";; 1) echo "Cancelo la operacion.";; 255) echo "Cerro la ventana.";; esac -------- fred@test:~> ./ejemplo7.sh <--Aun no e hecho las imagenes--> |
4) Usando zenity:
admin escribió: |
#!/bin/bash input=$(zenity --text "Escriba un valor: " --entry) retval=$? case $retval in 0) echo "Su valor es: '$input'";; 1) echo "Cancelo la operacion.";; esac -------- fred@test:~> ./ejemplo8.sh <--Aun no e hecho las imagenes--> |
Quizas zenity sea la mejor opcion cuando tienes funcionando una X, pero cuando no dialog es la mejor opcion o read como lo mas simple para un script.
Las paginas man ofrecen mayor documentacion.
Usando ciclos:
Con los ciclos podemos hacer maravillas, tanto moviendonos de un rango a otro como usandolos para movernos en el mismo sistema, empecemos con lo basico:
admin escribió: |
#!/bin/bash for (( i=1;i<=5;i++ ));do echo $i done -------- fred@test:~> ./ejemplo9.sh 1 2 3 4 5 fred@test:~> _ |
Haciendo algo mas complejo, mostrando si es directorio o archivo los datos contenidos en una carpeta dada:
admin escribió: |
#!/bin/bash for item in `ls $1`;do if [[ -d $item ]];then echo $item": Es una carpeta" else echo $item": Es un archivo" fi done -------- fred@test:~> ./ejemplo10.sh /home/test avion.wmv: Es un archivo Desktop: Es una carpeta Documents: Es una carpeta Pictures: Es una carpeta video.avi: Es un archivo fred@test:~> _ |
No hay comentarios:
Publicar un comentario