En muchas ocasiones, puede querer solicitar al usuario alguna información, y existen varias maneras para hacer esto. Ésta es una de ellas:
#!/bin/bash
echo Por favor, introduzca su nombre
read NOMBRE
echo "¡Hola $NOMBRE!"
Como variante, se pueden obtener múltiples valores con read. Este ejemplo debería clarificarlo.
#!/bin/bash
echo Por favor, introduzca su nombre y primer apellido
read NO AP
echo "¡Hola $AP, $NO!"
Pruebe esto en la línea de comandos (o en una shell):
echo 1 + 1
Si esperaba ver '2', quedará desilusionado. ¿Qué hacer si quiere que BASH evalúe unos números? La solución es ésta:
echo $((1+1))
Esto producirá una salida más 'lógica'. Esto se hace para evaluar una expresión aritmética. También puede hacerlo de esta manera:
echo $[1+1]
Si necesita usar fracciones, u otras matemáticas, puede utilizar bc para evaluar expresiones aritméticas.
Si ejecuta "echo $[3/4]" en la línea de comandos, devolverá 0, porque bash sólo utiliza enteros en sus respuestas. Si ejecuta "echo 3/4|bc -l", devolverá 0.75.
De un mensaje de mike (vea los agradecimientos):
siempre usas #!/bin/bash .. a lo mejor quieres dar un ejemplo
de cómo saber dónde encontrar el bash.
`locate bash' es preferible, pero no todas las máquinas
tienen locate.
`find ./ -name bash' desde el directorio raíz funcionará,
normalmente.
Sitios donde poder buscar:
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash
(no se me ocurre ningún otro directorio... lo he encontrado
la mayoría de estos sitios en sistemas diferentes).
También puedes probar 'which bash'.
En bash, el valor de retorno de un programa se guarda en una variable especial llamada $?.
Esto ilustra cómo capturar el valor de retorno de un programa. Supongo que el directorio dada no existe. (Esto también es sugerencia de Mike).
#!/bin/bash
cd /dada &> /dev/null
echo rv: $?
cd $(pwd) &> /dev/null
echo rv: $?
Este pequeño script muestra todas las tablas de todas las bases de datos (suponiendo que tenga MySQL instalado). Considere también cambiar el comando 'mysql' para que use un nombre de usuario y clave válidos.
#!/bin/bash
DBS=`mysql -uroot -e"show databases"`
for b in $DBS ;
do
mysql -uroot -e"show tables from $b"
done