1 2 3 4 |
#!/bin/bash for i in $( ls ); do echo item: $i done |
1 2 3 4 |
#!/bin/bash for i in $( ls ); do echo item: $i done |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#! /bin/bash clear cont=1 num=1 while test $cont -le 20 do div=`expr $num % 2` if test $div -eq 0 then echo "$num es un numero PAR" cont=`expr $cont + 1` fi num=`expr $num + 1` done echo "------------------" echo "Estos son los 20 primeros numeros PARES" echo "" |
Para hacer nuestros scripts más potentes, a veces nos puede interesar permitir que nuestros parámetros se pasen precedidos de la opción a la que corresponden. Con esto podríamos hacer cosas como:
# miscript -a opciona -b opcionb -d opciond
# miscript -b opcionb -c opcionc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#!/bin/sh while test -n "$1"; do case "$1" in -a) opciona=$2 echo "opcion a $opciona...." shift ;; -b) opcionb=$2 echo "opcion a $opcionb...." shift ;; -c) opcionc=$2 echo "opcion a $opcionc...." shift ;; -d) opciond=$2 echo "opcion a $opciond...." shift ;; *) echo "Unknown argument: $1" exit 0 ;; esac shift done |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#! /bin/sh # cantidad de usuarios conectados uconn=`who | wc -l | sed 's/^ *//g'` # cantidad de usuarios reales ureal=`who | cut -f1 -d ' ' | sort -u | wc -l | sed 's/^ *//g'` # mostrar usuarios con el num. de veces que esta conectado who | cut -f1 -d ' ' | uniq -c | sort | sed 's/^ *//g' # explicacion (para el que no entienda) # who mostrar todos los usuarios # cut -f1 -d ' ' obtener solo los nombres # uniq -c obtener cantidad de repeticiones # sort ordenar por numero de conexiones # sed 's/^ *//g' eliminar espacios en blanco al # al principio de la linea. # eso es para todo, ya que algunos # programas mantienen un largo numerico # para mostrar en la salida. # imprimir informacion echo "connected: $uconn" echo "reales : $ureal" |
Este script muestra la cantidad de archivos que existen en cada directorio a partir del directorio desde donde se ejecuta el script.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash START=$HOME [ $# -eq 1 ] && START=$1 || : if [ ! -d $START ] then echo "$START no es un directorio!" exit 1 fi DIRS=$(find "$START" -type d) for d in $DIRS do [ "$d" != "." -a "$d" != ".." ] && echo "$d ====>> $(ls -l $d | wc -l) archivos" || : done |