PDA

Visualizza la versione completa : script bash, errore sintassi


psykopear
20-03-2008, 17:09
Sto sistemando il solito script, ecco la parte che mi interessa:


echo "Digita il nome dello script da installare"
read elencosript
chmod +x $HOME/script/$elencosript
if [ -f "/usr/bin/$elencoscript" ]
then
echo "Lo script esiste già, sei sicuro di volerlo sovrascrivere? (s/N)"
read risposta
if [ $risposta == s ]
then cp $HOME/script/$elencosript /usr/bin/
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
elif [ $risposta == n ]
then
exit 1
fi
else
cp $HOME/script/$elencosript /usr/bin/
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
fi
;;



Lo scopo è quello di copiare lo script in /usr/bin, ma, se esiste già un file con quel nome, chiedere prima conferma all'utente. Però c'è qualcosa di errato, dato che lo script viene installato comunque, senza chiedere nulla

psykopear
20-03-2008, 17:16
mi sto avvicinando alla soluzione


echo "Digita il nome dello script da installare"
read elencosript
chmod +x $HOME/script/$elencosript
[ -f "/usr/bin/$elencoscript" ] | echo "Lo script esiste già, sei sicuro di volerlo sovrascrivere? (s/N)";
read risposta;
if [ $risposta == s ];
then cp $HOME/script/$elencosript /usr/bin/;
echo "Installati gli script sul tuo computer";
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)";
elif [ $risposta == n ];
then
exit 1;
fi;

# cp $HOME/script/$elencosript /usr/bin/
# echo "Installati gli script sul tuo computer"
# echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
# fi


La prima parte ora funziona, non so come aggiungere la seconda parte, devo rimettere il [ -f "/usr/bin/$elencoscript" ] solo usando il doppio pipe dopo? tipo


[ -f "/usr/bin/$elencoscript" ] || cp $HOME/script/$elencosript /usr/bin/;
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"


????

psykopear
20-03-2008, 17:22
Originariamente inviato da psykopear
mi sto avvicinando alla soluzione


echo "Digita il nome dello script da installare"
read elencosript
chmod +x $HOME/script/$elencosript
[ -f "/usr/bin/$elencoscript" ] | echo "Lo script esiste già, sei sicuro di volerlo sovrascrivere? (s/N)";
read risposta;
if [ $risposta == s ];
then cp $HOME/script/$elencosript /usr/bin/;
echo "Installati gli script sul tuo computer";
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)";
elif [ $risposta == n ];
then
exit 1;
fi;

# cp $HOME/script/$elencosript /usr/bin/
# echo "Installati gli script sul tuo computer"
# echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
# fi


La prima parte ora funziona, non so come aggiungere la seconda parte, devo rimettere il [ -f "/usr/bin/$elencoscript" ] solo usando il doppio pipe dopo? tipo


[ -f "/usr/bin/$elencoscript" ] || cp $HOME/script/$elencosript /usr/bin/;
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"


????

come temevo così non va, mi chiede sempre se voglio sovrascrivere il file, anche se questo non esiste...

psykopear
20-03-2008, 18:27
ho risolto togliendo il test e rimettendo la cartella di utilizzo /usr/local/bin per evitare casini.

vortex87
20-03-2008, 18:28
A volte scrivi "$elencosript" e altre "$elencoscript" :stordita:

psykopear
20-03-2008, 18:30
Originariamente inviato da vortex87
A volte scrivi "$elencosript" e altre "$elencoscript" :stordita:

caspita :D ahaha, sti errori del cavolo :D

edit: il bello è che in tutto il resto dello script ho sempre scritto "elencosript" (non so come ho fatto a sbagliare così tanto volte), e invece li ho scritto corretto... Vabè, comunque rimango come sono ora

Loading