[BASH] problema exit

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Gandalf88bis
Prode Principiante
Messaggi: 47
Iscrizione: giovedì 27 settembre 2007, 14:57

[BASH] problema exit

Messaggio da Gandalf88bis »

allora io ho la seguente situazione:

1) script di menù che mi fa scegliere cosa si desidera fare. Nel mio caso specifico si sceglie se fare la copia di un file o cartella, il cambio di permessi del file o cartella oppure il cambio di proprietario.

2) selezionando l'operazione viene lanciato lo script adeguato ma ho notato che, servendo per tutti una selezione del file o cartella su cui fare le operazioni, ho deciso che ogni script lanciato in questo modo richiama per prima cosa lo scriptSelezionaFile. Il punto è che se non trovo nessun file o cartella devo fare terminare il programma perchè altrimenti non funzionerebbe niente. Il problema è: come?

ho fatto nel seguento modo:

Codice: Seleziona tutto

nLinee=`grep -c $var1 ./progettoImpianti/tmp/listaFile`

while [ $nLinee -eq 0 ]; 
do
	echo ""
	echo "NESSUN FILE O DIRECTORY CON QUEL NOME ESISTENTE!"
	echo "il programma verrà terminato"
	echo ""	
	exit
done
in nLinee c'è il numero di file trovati. Nel ciclo mi entra ma con exit o exit + numero qualsiasi mi esce dal ciclo ma poi mi prosegue con lo script... come posso fare a far bloccare l'esecuzione dello script? il kill del processo non mi sembra una soluzione carina...
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: [BASH] problema exit

Messaggio da paper0k »

O non ho capito la domanda o è facile la risposta! :D

Codice: Seleziona tutto

if [ $nLinee -eq 0 ]
then
	echo ""
	echo "NESSUN FILE O DIRECTORY CON QUEL NOME ESISTENTE!"
	echo "il programma verrà terminato"
	echo ""	
	exit
fi
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Gandalf88bis
Prode Principiante
Messaggi: 47
Iscrizione: giovedì 27 settembre 2007, 14:57

Re: [BASH] problema exit

Messaggio da Gandalf88bis »

stessa cosa... avevo messo il while solo per poter vedere se almeno mi usciva dal ciclo... il punto è che mi esce dal ciclo ma non dallo script (lo script è ovviamente più articolato del frammento di codice che ho postato...).
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: [BASH] problema exit

Messaggio da paper0k »

Ah! Ma lanci questo script all'interno di un altro?
Se così potresti fare qualcosa di simile
script master

Codice: Seleziona tutto

#! /bin/bash

if ./script_figlio 
then
  echo "OK"
else
  echo "KO"  
fi  
script figlio

Codice: Seleziona tutto

#! /bin/bash

nLinee=`grep -c $var1 ./progettoImpianti/tmp/listaFile`
if [ $nLinee -eq 0 ]
then
	echo ""
	echo "NESSUN FILE O DIRECTORY CON QUEL NOME ESISTENTE!"
	echo "il programma verrà terminato"
	echo ""	
	exit 1
fi
exit 0
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Gandalf88bis
Prode Principiante
Messaggi: 47
Iscrizione: giovedì 27 settembre 2007, 14:57

Re: [BASH] problema exit

Messaggio da Gandalf88bis »

no, non ci siamo capiti... metto lo script su pastebin:

Codice: Seleziona tutto

http://pastebin.com/m6320a1b4
dunque, io voglio che se entra nel ciclo mi faccia uscire dopo che sia comparso a video la scritta "NESSUN FILE O DIRECTORY CON QUEL NOME ESISTENTE!" etc...
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: [BASH] problema exit

Messaggio da paper0k »

Scusa e non lo fa?!?!?!
Visualizza l'errore e non esce o non visualizza l'errore?
Ma in var1 cosa metti? Non è che è un problema di grep?
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Avatar utente
Elrond
Rampante Reduce
Rampante Reduce
Messaggi: 5018
Iscrizione: sabato 22 novembre 2008, 12:32
Contatti:

Re: [BASH] problema exit

Messaggio da Elrond »

È almeno la terza discussione che apri sullo stesso script (1 e 2), in particolare nella seconda ti avevo fatto una domanda a cui non hai mai risposto...
Il mio blog su Ubuntu | Script per vedere canali RAI in diretta senza browser (discussione)
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
Gandalf88bis
Prode Principiante
Messaggi: 47
Iscrizione: giovedì 27 settembre 2007, 14:57

Re: [BASH] problema exit

Messaggio da Gandalf88bis »

è il secondo e per motivazione differenti... (il primo è la risposta ad un'altro post)

innanzi tutto set -x non mi serve e all'inizio #!/bin/bash lo metto e funziona.

Cmq ho risolto tutto, basta richiamare lo script in questo modo:

Codice: Seleziona tutto

. ./<path del file>/nomeFile
e non

Codice: Seleziona tutto

./<path del file>/nomeFile
in questo modo (anche lanciando ps in un altro terminale) si vede che ci sono due bash attive e quando entro nel controllo se esiste o meno un file la seconda bash si chiude e rimane solo quella con il menù principale.

Funziona parzialmente anche l'idea di mettere il controllo in uno script a parte e poi richiamarlo, ma sorge un problema: se uso il comando exit si chiude del tutto il gnome terminal, cosa che non desidero. Come soluzione in caso di estrema necessità può cmq essere soddisfacente.

Grazie a tutti per la pazienza!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti