Bash/Guións
Bash | ||
← Volver a Executar ficheiros binarios | Guións |
Os guións (scripts en inglés) son ficheiros de texto que conteñen unha serie de ordes. Ditas ordes execútanse a unha tras da outra nunha consola ao executar o guión. Existen varios xeitos de executar un guión:
- escribindo en consola a súa ruta completa ─as rutas relativas non valen─,
- escribindo directamente o nome ─se o guión está nunha das rutas en que o sistema busca executables─ ou
- precedendo a ruta da orde “
bash
” ─neste caso pódese utilizar unha ruta relativa─.
A continuación algúns exemplos:
/ruta/ao/guión.sh
./guión.sh # Supoñendo que estea no directorio de traballo actual
guión.sh # Supoñendo que estea nunha das rutas en que o sistema busca executables
bash guión.sh
Normalmente os guións levan por extensión de ficheiro .sh
ou .bash
.
Parámetros
editarUn guión pode traballar con parámetros, é dicir, na súa chamada pode recibir argumentos e pode traballar con eles.
Os parámetros serán as palabras que se escriban tras a chamada ao guión, separadas da chamada e entre elas por espazos en branco.
Para utilizar os parámetros no guión, só teremos que facer referencia a eles mediante o símbolo do dólar ($) seguido do número correspondente á posición que ocupa o parámetro na chamada ao guión: $1, $2, $3...
Por exemplo, se temos un guión chamado treslinas
tal que así:
echo $1
echo $2
echo $3
e o chamamos con $ bash treslinas liña1 liña2 liña3
, obteremos:
liña1
liña2
liña3
Variables
editarAdemais das variables establecidas polos argumentos cos que se chama ao guión e mailas variables de ambiente, nun guión pódense crear variables e asignarlles valores para así facilitar a escrita de valores que se repiten ao longo dun guión ou para facilitar o cambio deses valores en todo o guión. Esta é a sintaxe fundamental:
VARIABLE=valor # Establécese un valor para a variable.
...
echo $VARIABLE # Úsase a variable, precedendo o seu identificador do símbolo "$".
Por exemplo, o seguinte guión:
SAUDO="Boas!" # Vai entre comiñas por ser unha cadea de texto,
echo $SAUDO # os valores numéricos para usar en operacións non van entre comiñas.
imprimiría en pantalla:
Boas!
O valor dunha variable, ademais de ser un valor numérico ou unha cadea de texto (coma o exemplo anterior), pode ser o resultado dado por unha orde. Para isto, a sintaxe fundamental sería:
VARIABLE=$(orde)
Por exemplo, o seguinte guión:
SAUDO=$(echo "Boas!")
echo $SAUDO
imprimiría en pantalla:
Boas!
Bucles
editarNun guión podemos utilizar bucles. Vexamos un exemplo dun bucle for
:
for i in {primeironumero..segundonumero}
do
...$i...
...$i...
done
Este bucle executará as ordes contidas entre o do
e mailo done
para todos os valores comprendidos entre primeironumero
e segundonumero
, ambos os dous incluídos.
Sentencias condicionais
editarPodemos escribir nos guións sentencias condicionais, de xeito que, segundo se cumpra ou non unha condición, o guión faga unha ou outra cousa. Esta é a sintaxe fundamental das sentencias condicionais:
if condición
then ordes # Execútanse se se cumpre a condición
else ordes # Execútanse se non se cumpre a condición
fi # Pecha a sentencia de control condicional
Agora vexamos un exemplo real:
if [ "palabra" = "palabra" ]
then echo "As palabras coinciden."
else echo "As palabras non coinciden."
fi
Se executamos este guión, aparecerá na consola o texto «As palabras coinciden.». Se cambiamos unha das dúas palabras, poderemos comprobar que o resultado será a mensaxe «As palabras non coinciden.».
Comprobar se unha cadea de texto ten lonxitude
editarPara comprobar se unha cadea de texto ten lonxitude, utilízase -n
. Por exemplo, o seguinte guión comproba se existe algún argumento na súa chamada, e imprime unha mensaxe distinta en función diso:
if [ -n "$1" ]
then echo "Fornecéuselle un argumento ao guión."
else echo "O guión executouse sen ningún argumento."
fi
Comprobacións sobre ficheiros e directorios
editarPodemos establecer unha condición que verifique a existencia dun ficheiro mediante -a
ou -e
. Vexamos un exemplo.
if [ -a "$1" ]
then echo "O ficheiro existe."
else echo "O ficheiro non existe."
fi
De xeito similar podemos comprobar outras cousas mediante outras opcións:
-d
- Comproba se existe e é un directorio.
-f
- Comproba se existe e se é un ficheiro regular.
-r
- Comproba se existe e se teñen permisos de lectura.
Sentencias condicionais aniñadas
editarAs sentencias condicionais en bash pódense aniñar. Véxase o seguinte exemplo:
if [ -n "$1" ]
then
if [ "$1" = "opción" ]
then echo "Seleccionou a opción."
else echo "Non se coñece a opción seleccionada."
fi
else
echo "Non introduciu opción algunha."
fi
Comparación de números enteiros
editar- Menor que (<)
if [ "$a" -lt "$b" ]
Funcións
editarPara utilizar unha función en Bash, abonda con declarala seguindo a seguinte sintaxe fundamental:
function NomeDaFuncion ()
{
...
}
E a continuación no guión pode utilizarse chamándoa coma se se tratase dun executable calquera. Ademais pódenselle pasar argumentos á función, que só traballa con argumentos locais, é dicir, para ela os valores de $1
ou $2
son aqueles con que se lle chame dende o guión, non os globais con que se chama ao guión.
Véxase o seguinte exemplo de uso dunha función nun guión:
function Mensaxe ()
{
echo $1
echo -n "Primeiro argumento: "
echo $2
echo -n "Segundo argumento: "
echo $3
}
Mensaxe "A continuación lístanse os dous primeiros argumentos fornecidos ao guión:" $1 $2
Nótese que para evitar problemas ao utilizar guións en Bash con funcións (especialmente como superusuario) cómpre engadir sempre ao principio dos guións a seguinte liña:
#!/bin/bash
Bash | ||
← Volver a Executar ficheiros binarios | Guións |