jeudi 9 août 2018

La structure IF ELSE

La structure IF ELSE
La estructura IF ELSE permite realizar un o multiples  tests booleanos afin de ejecutar las instructiones que satisfacen la condicion 


Example 1 : el ejemplo siguiente muestra la utilisasion de la estructura if para verfifcar la existencia de un dossier 

SRC1="installfolder"
DATE1=`date '+%y%m%d-%H%M%S'`
FOLDER=FILES$DATE1
BASEDIR=$(dirname "$0")
DESTPATH="/sdcard"

#COPY PAYLOAD TO  STORAGE
if [ -d $SRC1 ];then
 printf "proceed to copy on internal FOLDER=$FOLDER \n\t"
 mkdir $DESTPATH/$FOLDER &&
 cp -rv $SRC1/* $DESTPATH/$FOLDER &&
 printf "copy finished\n"
else
 printf "unzip file doesn't exist\n"
fi
  • BASEDIR=$(dirname "$0"):dirname permite recuperar el path completo del script en exécution  ,el script es representado por la variable  $0
  • if [ -d $SRC1 ];then :permite verificar si la variable SRC1 es de tipo dossier ,en caso positivo la condition sera TRUE y el programa executara la parte interior de este caso
  • ELSE:en caso de que la condition es FALSE  el programa ejecutara la parte interior de este caso


ejemplo2: el siguiente ejemplo muestra como verificar dos test booleanos en una misma syntaxis  asi , el ejemplo verifica la no existencia de un dossier y la existencia de un archivo afin de ejecutar el codigo si la condicion es verdadera

if [ ! -d $DESTPATH/$FOLDER ] && [ -f $SRC1 ];then
printf "proceed to create FOLDER=$FOLDER \n\t"
mkdir -p $DESTPATH/$FOLDER
else
printf "destination folder already or missing zip exit=2 \n"
exit 2
fi

  • if [ ! -d $DESTPATH/$FOLDER ] && [ -f $SRC1 ]; : verificar dos condiciones  la primera es la no existencia de un dossier  $FOLDER y la existencia del archivo $SCR1 si las dos condiciones son verdaderas el codigo es ejecutado [ true ] && [ true ] = EJECUTAR
  • mkdir -p $DESTPATH/$FOLDER : permite crear un dossier asi como los dossier parents en caso que no existan

  


samedi 7 juillet 2018

find shell command




find
find es una instruccion que permite "encontrar" archivos segun los filtros especificos

ejemplo:
$ find ~/ -size +4M -exec ls -lha {} +;
-size:opcion que mermite definir busqueda de archivos segun la talla +/- BYTES
-exec: opcion que permite ejectutar iterativamente un commando sobre cada resultado de  find
-ls -lha: commando que  muestra las permissiones y tamano en MB de un archivo 

jeudi 21 juin 2018

La estructura While en shell




la estructura While  en shell

Ejemplo1

La idea sera poder leer linea por linea(incluyendo espacion entre palabras de una misma linea) el contenido de un fichier de texto a travez de una estructura while
compgen -u >result.txt
sleep 1;
TOTAL=`cat result.txt | wc -l`
sleep 1;
echo "go.. number total =$TOTAL"
INDEX=-1;


  • compgen -u >result.txt: permite recuperar la lista de usuarios del systema y guardar el resultado en un fichier de texto  usando una redireccion >
  • `cat result.txt | wc -l`: permite recuperar el numero total de lineas del archivo result.txt y guardar el resultado inetger en una variable llamada TOTAL


while read -r SOME_VAR;
do
INDEX=$((1+INDEX))
echo "element $INDEX = $SOME_VAR"
done < result.txt


  • while read -r SOME_VAR : permite guardar en la variable SOME_VAR el contenido de una linea
  • done < result.txt : permite alimentar la boucle haciendo una redireccion en entrada utilisando un fichier de texto  result.txt

Resultado






mercredi 20 juin 2018

la estructura for en shell




la estructura for en shell
  • for i in LIST  : i representa la variable a repetir en  cada  iteracion de LIST
  • do COMMANDES :representa los comandos a ejecutar 
  • done : indica el fin del boucle for

para nuestro ejemplo usaremos dos matriz

#creation d'un  tableau de type chaine de caractères
montab=("val1" "val2" "val3" "val4");
#creation d'un tableau des types multiple
montab2=("zero" 1 `pwd` 3);


Ejemplo de uso de la structure for

#nombre des éléments
NOMELEMT=${#montab[@]}
printf "le nombre des elements sur le tableau est=${NOMELEMT} \n"

  • ${#montab[@]} : sintaxis que recupera la cantidad total de elementos en una matriz


#iteration for 1
for i in ${montab[@]};
do 
printf "$i \n\n";
done;
  • imprimir el contenido de cada element  del array montab
  • printf "$i \n\n": uso de dos espacios \n entre cada iteracion

echo "iteration2"
#iteration 2
for i in ${montab2[*]};
do 
printf "result=$i \n";
done;

  • ${montab2[*]}  manera alternativa de recuperar el numero total de elemntos del array montab2

resultado de le script






forma 2
la estructura for puede utilisarse en una forma simplificada , recuperando los elementos de iteracion directamente de la consola


Ejemplo3
#!/bin/bash
#affichage des valeurs recuperées de la console
#iteration 1
echo "iteration1"
for i 
do 
printf "la valeur passé en paramètre est = $i \n\n";

done;


  • for i : al no estar declarada  , el valor de i sera el conjunto de elementos  pasados en parametro desde la consola
  • do COMMANDE :ejecucion iterativa del comando deseado
  • done; 

Result:
el resultado de la ejecution  ./forex2.sh zero un 2 3 esta compuesto de 4 elementos guardados en una especia de array  i , que sera iterada:





Otros ejemplos


#!/bin/bash
#affichage des tous les utilsateurs du systeme
compgen -u
#iteration 1
echo "start boucle"
for i in "$@"
do
printf "le utilisateur est "
id -u "$i"
done;


  • for i in "$@" : permite recuperar la totalidad de argumentos pasados en parametro en la variable i
  • compgen -u : permite listar todos los utilisadores del systema
  • "$@": permite aceptar espacion como parametro de entrada
resultado