View Full Version : [Bourne Shell]Valore di ritorno file comandi
E' possibile creare un file comandi che una volta chiamato mi ritorni un valore?
Ad esempio il comando expr ARG1 + ARG2 restituisce la somma dei due argomenti, se io volessi fare un comando che mi restituisca un valore allo stesso modo come dovrei fare?
Per ora l'unico modo e mettere il valore nell'exit ma poi per ricavarlo devo leggere il valore di $? dopo che il comando è stato invocato, e non è proprio la stessa cosa...
ps. parlo di UNIX :D
se non ho capito male basta che fai una echo del risultato
ma l'echo me lo manda in console, io invece vorrei poter decidere cosa farne, ad esempio vorrei poter fare una cosa del genere:
variabile=`mycommandfile`
senza vedere nulla stampato in console
per assegnare ad una variabile l'output di uno script puoi fare l'echo del risultato come suggerito ed invocarlo così:
var=$(nomescript)
precisando all'interno delle parentesi eventualmente li path dello script se non presente nel PATH..
in questo modo non verrà mandato nulla sullo standard output ossia quello che per te è la console :)
ah ora ho capito:
VAR=`expr ARG1 + ARG2`
le ` sono essenziali
E' possibile creare un file comandi che una volta chiamato mi ritorni un valore?
Ad esempio il comando expr ARG1 + ARG2 restituisce la somma dei due argomenti, se io volessi fare un comando che mi restituisca un valore allo stesso modo come dovrei fare?Mandando sullo standard-output il risultato. (e chi vuole "catturarne" il risultato fa `cmd` o $(cmd) )
Per ora l'unico modo e mettere il valore nell'exit ma poi per ricavarlo devo leggere il valore di $? dopo che il comando è stato invocato, e non è proprio la stessa cosa...Quello è lo "status code", è un valore numerico 0, 1 ....
Capito grazie :p
Sisi usavo l'exit perchè non sapevo come si facesse in realtà :D :fagiano:
Un altra cosa, ora per fare un confronto fra stringhe faccio così
str="ciao"
case $str in
*ci*) echo "OK"
;;
ecc ecc) echo "NO"
;;
esac
Mi chiedevo, c'è un modo per fare un confronto con "test str1 = str2" utilizzando perà dei caratteri speciali per il match?
Tipo
test *ci* = ciao
Mi chiedevo, c'è un modo per fare un confronto con "test str1 = str2" utilizzando perà dei caratteri speciali per il match?
Tipo
test *ci* = ciaoUna cosa del tipo:
if [[ $STR == *ia* ]]; then
echo "match"
else
echo "no match"
fi(funziiona con la bash 2+, se non mi sbaglio)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.