maniu@securebrain.com:~# vi BashScripting



(qualcosa su...) Bash Scripting




Tilde:
~+ : directory corrente (PWD)
~- : directory precedente all'ultimo cambiamento (OLDPWD)


Parametri Speciali:
$1..n : posizionali
$@ : lista dei posizionali separati da spazio
$# : numero dei parametri posizionali
$0 : percorso con il quale e' stato invocato lo script
$? : exit status dell'ultimo comando eseguito
$$ : pid dello script
$! : pid dell'ultimo processo lanciato in bg


Sostituzione di comando:
$(comando) o `comando` immagazzinano l'output del comando/i rimuovendo i ritorni a capo


Aritmentica:
$(($1+$2)) o $[$1+$2]


Parentesi graffe:
generano una lista di elementi costituiti da cio' che sta prima delle parentesi, l'i-esimo elemento
della lista interna alle parentesi e cio' che sta dopo le parentesi.
es: mkdir /home/{pippo,pluto}/mail/{in,out}


Suddivisione in parole:
es:
for i in $(cat prova.txt); do
echo $1;
done
alla variabile i viene assegnato ciascun elemento della lista ottenuta espandendo il costrutto $(),
quindi vengono eseguite le istruzioni racchiuse fra do e done.
La stringa risulta spezzata secondo il valore della variabile IFS, che di default e' spazio.
Per settarla col ritorno a capo IFS=$`\n`


Variabili:
possiamo utilizzare una variabile in lettura come se fosse un comando:
$MYCOMMAND="echo"
$MYCOMMAND -e "Hallo World"

per dichiarare che una variabile e' un intero:
declare -i C=1


Variabili Interne:
impostate automanticamente
PWD : path of working directory
OLDPWD : com'era PWD prima di cambiare
UID : ID dell'user che ha invocato la shell
RANDOM : generatore di numeri casuali
SECONDS : num. dei secondi trascorsi all'avvio della shell
IFS : separatore di campo utilizzato nella suddivisione di parole
PS1 : prompt primario della shell
PS2 : prompt secondario della shell

impostate dal sistema
PATH : percorso in cui e' ricercato un comando
HOME : percorso della home dell'utente

non impostate
PS3 :prompt del comando select


Exit status:
valore che rappresenta lo stato di termine di un comando
e' contenuto nella variabile $?
=0 comando terminato correttamente
!= 0 notifica errore
&& e || utilizzano questo valore.


redirezione STD o/e:
comando 1> file 2>&1
exec 2>&1 > $LOGFILE
Operazioni su numeri non interi
echo "0.01 > 0.1" | bc -l




:q!