Algunos ejemplos de scripts (1)

 

Trozos de bash útiles para incorporar a scripts.

# 1


#!/bin/bash
#
## incremento de una variable
echo
NUM=0
while [ $NUM -lt 10 ]
do
   ((NUM+=1))
   echo $NUM
done
echo
#

# 2

#!/bin/bash
echo
##
## Desglosar una linea con los parámetros separados por punto y como y extraer uno
echo
# Guardar el valor por defecto de la variable IFS (el espacio)
OLDIFS="$IFS"
# Establecer a la variable IFS el valor de punto y coma
IFS=""
# Abrir los archivos
exec 3<2.txt 4<2b.txt
#
while read nombre edad poblacion
do
    echo $nombre
done <&3 &>4
#
# Cerrar archivos
exec 3<&-
exec 4>&-
# Restablecer el valor por defecto de la variable IFS
IFS="$OLDIFS"
echo

# 3

#!/bin/bash
echo
##### Ejemplos del comando test
## forma básica.
test -f 1.sh
echo $?
echo
## verificar si un archivo existe o no en el presente directorio
## 0 = existe. 1 = No existe
[ -f 1.sh ]
echo $?
echo
[ -f 2.txt ]
echo $?
echo
## Comprobar si existe un archivo (-e) y (-a) si no está vacio (-s).
## 0 = si se cumplen las dos condiciones. 1 = si alguna no se cumple
[ -e 0.sh -a -s 0.sh ]
echo $?
## Otra forma del comando test
echo
[[ -z $VACIO ]]
echo $?
echo
## Y otra más
[[ $VACIO = "" ]]
echo $?
echo

# 4

#!/bin/bash
echo
## entrar un número en la misma linea que la pregunta (\c).
echo -e "Dime un número: \c "
read NUM
##  Y verificar que sea verdaderamente un número
if [[ $NUM = ?([+-])+([0-9]) ]]; then
    echo "És un número"
else
    echo "No lo és"
fi

# 5

#!/bin/bash
echo
## Uso de operadores lógicos
## -a (&&) equivalente a un "y" lógico y -o (||) equivalente a un "o" logico
# Establecer el usuario sin privilegios del sistema
MI_USER=$(cat /etc/passwd | grep 1000 | cut -d: -f1)
ARG1="/home/$MI_USER"
ARG2="/tmp"
ARG3="/NO_EXISTE"
if [ -w $ARG1 -a \( -e $ARG2 -o -e $ARG3 \) ]; then
    echo "$ARG1 --> Tiene permisos de escritura y existe o $ARG2 o $ARG3"
fi
## da el mismo resultado que
if [[ -w $ARG1 && (-e $ARG2 || -e $ARG3) ]]; then
    echo "$ARG1 --> Tiene permisos de escritura y existe o $ARG2 o $ARG3"
fi

Share

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *