[PLUTO-help] Terminare uno script bash senza chiudere il terminale
Melinda Siciliano
mellybinda a gmail.com
Ven 5 Nov 2010 16:08:10 CET
Ops!!!! Ho fatto casini con il copia e incolla.....
Ti mando la parte problematica. Il resto esegue una serie di programmi che
non sto a mettere.
Ciao,
Melinda
#!/bin/bash
RUN='123456'
PERIOD='april'
PASS='week12'
YEAR='2010'
TMPPLACE='/tmp'
TMPFOLDER='1'
EXECFOLDER='$HOME/foldermacro'
MAXFILES='300'
echo "Run Number :[${RUN}]"
read
if [ "$REPLY" != "" ]; then
export RUN=$REPLY
echo "Run $RUN"
fi
echo "Period :[${PERIOD}]"
read
if [ "$REPLY" != "" ]; then
export PERIOD=$REPLY
echo "Period $PERIOD"
fi
echo "Pass : [${PASS}]"
read
if [ "$REPLY" != "" ]; then
export PASS=$REPLY
echo "Pass $PASS "
fi
echo "Year :[${YEAR}]"
read
if [ "$REPLY" != "" ]; then
export YEAR=$REPLY
echo "Year $YEAR"
fi
echo "folder with macros :[${EXECFOLDER}]"
read
if [ "$REPLY" != "" ]; then
export EXECFOLDER=$REPLY
echo "Folder: $EXECFOLDER"
fi
echo "local or lxplus (1=local 2=server) :[${TMPFOLDER}]"
read
if [ "$REPLY" != "" ]; then
export TMPFOLDER=$REPLY
fi
if [ "$TMPFOLDER" == "1" ]; then
export TMPPLACE='/tmp'
else
export TMPPLACE='/tmp/$USERNAME'
fi
GOOD=130
echo "Max number of files (Insert a number >0) :[${MAXFILES}]"
read
case $REPLY in
*[a-zA-Z]*|*[!0-9]*|*[-]*)
echo "Wrong: it is not a number >
0"
;;
*[0-9]*)
export MAXFILES=$REPLY
echo "Max number of files: $MAXFILES"
export GOOD=0
;;
esac
if [ "GOOD" != "0" ]; then
exit $GOOD
fi
if [ "$REPLY" != "" ]; then
export MAXFILES=$REPLY
echo "Max number of files: $MAXFILES"
fi
if [ ls -l "run$RUN" >/dev/null 2>&1 ]; then
echo "directory run$RUN exists "
else
mkdir "run$RUN"
fi
cd "run$RUN"
if [ ls -l $PASS > /dev/null 2>&1 ]; then
echo "directory $PASS exixsts"
else
mkdir $PASS
cd $PASS
fi
echo " Run $RUN "
echo " Period $PERIOD"
echo " Pass $PASS"
2010/11/5 Melinda Siciliano <mellybinda a gmail.com>
>
>
> 2010/11/5 <saint a eng.it>
>
>> >>>>> "MS" == Melinda Siciliano <mellybinda a gmail.com> writes:
>>
>> >> Ho provato a fare un copia e incolla del tuo codie e, ahime' per
>> >> me, anche
>> >> questo mi chiude la finestra :(.
>>
>> MS> Cosa puo' essere?
>>
>> La mia esci dovrebbe essere chiamata al posto della exit, forse non
>> era chiaro.
>>
>> CHI apre la finestra che viene chiusa al termine del programma ?
>>
>>
> La finestra e' aperta dall'utente che poi eseguira' lo script, inserendo le
> informazioni necessarie per il suo funzionamento.
>
>
>>
>>
>> Un terminale si chiude nel momento in cui termina il rpcesso
>> associato, sia esso una shell od un altro programma.
>>
>> Se lanci uno script questo usualmente è un figlio (fork() + exec())
>> del proccesso shell da cui lo lanci, e quando termina termina lui e
>> non il padre.
>>
>
>> Se però lanci lo script come . script non viene fatta la fork() ed un
>> termine per exit esplicito dello script termina la shell da cui è
>> stato lanciato lo script.
>>
>
> In questo caso il source agisce come il . script? Se si, impostando un
> alias in uno script di environment non risolverebbe il problema? Allora il
> problema e' un altro per me: come devo faer affinche' lo script diventi
> figlio della shell?
>
>
>>
>> Se poi invece hai fatto una cosa del tipo xterm -e script, allora
>> morendo il processo associato al terminale si chiude il terminale.
>>
>> Nulla di tutto cio'. L'utente apre il terminale dall'icona su desktop e
> poi lancia uno script che gli chiede di inserire determinate informazioni e
> poi avvia una serie di programmi e funzioni. Se le informazioni non sono
> corrette, ad esempio numero negativo quando mi aspetto un numero positivo,
> vorrei l'uscita dallo script. Solo che non veglio mettere if o case
> annidati. Volevo un equivalente del return delle funzioni in c++per
> terminare il programma.
>
>
>> È tanto grosso questo script ?
>>
>
> #!/bin/bash
> RUN='123456'
> PERIOD='april'
> PASS='week12'
> YEAR='2010'
> TMPPLACE='/tmp'
> TMPFOLDER='1'
> EXECFOLDER='$HOME/storedmacro'
> MAXFILES='300'
> echo "Run Number :[${RUN}]"
> read
> if [ "$REPLY" != "" ]; then
> export RUN=$REPLY
> echo "Run $RUN"
> fi
> echo "Period :[${PERIOD}]"
> read
> if [ "$REPLY" != "" ]; then
> export PERIOD=$REPLY
> echo "Period $PERIOD"
> fi
> echo "Pass : [${PASS}]"
> read
> if [ "$REPLY" != "" ]; then
> export PASS=$REPLY
> echo "Pass $PASS "
> fi
> echo "Year :[${YEAR}]"
> read
> if [ "$REPLY" != "" ]; then
> export YEAR=$REPLY
> echo "Year $YEAR"
> fi
> echo "folder with macros :[${EXECFOLDER}]"
> read
> if [ "$REPLY" != "" ]; then
> export EXECFOLDER=$REPLY
> echo "Folder: $EXECFOLDER"
> fi
> echo "local or server (1=local 2=server) :[${TMPFOLDER}]"
> read
> if [ "$REPLY" != "" ]; then
> export TMPFOLDER=$REPLY
> fi
> if [ "$TMPFOLDER" == "1" ]; then
> export TMPPLACE='/tmp'
> else
> export TMPPLACE='/tmp/$USERNAME'
> fi
> GOOD=130
> echo "Max number of files (Insert a number >0) :[${MAXFILES}]"
> read
> case $REPLY in
> *[a-zA-Z]*|*[!0-9]*|*[-]*)
> echo "Wrong: it is not a number > 0"
> exit
> ;;
> *[0-9]*)
> # export MAXFILES=$REPLY
> # echo "Max number of files: $MAXFILES"
>
> # export GOOD=0
> # ;;
> #esac
> #if [ "GOOD" != "0" ]; then
> #exit $GOOD
> #fi
> #if [ "$REPLY" != "" ]; then
> #export MAXFILES=$REPLY
> #echo "Max number of files: $MAXFILES"
> #fi
> if [ ls -l "run$RUN" >/dev/null 2>&1 ]; then
> echo "directory run$RUN exists "
> else
> mkdir "run$RUN"
> fi
> cd "run$RUN"
> if [ ls -l $PASS > /dev/null 2>&1 ]; then
> echo "directory $PASS exixsts"
> else
> mkdir $PASS
> cd $PASS
> fi
>
>
>
>
>
>>
>> --
>> Gian
>> Friends will be friends
>> right to the end!
>>
>
>
More information about the pluto-help
mailing list