[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