[PLUTO-help] Terminare uno script bash senza chiudere il terminale

Melinda Siciliano mellybinda a gmail.com
Ven 5 Nov 2010 16:01:47 CET


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