Sziasztok!
Celom, hogy a szkriptem ne csak a sunshellbol, hanem az egesz szkriptbol lepjen ki.. Ezer oldalt lehet talalni a neten, hogy az exit a subshellben nem fog kilepni az egesz szkriptbol:
pl: http://tldp.org/LDP/abs/html/subshells.html
COMMAND1
COMMAND2
COMMAND3
(
IFS=:
PATH=/bin
unset TERMINFO
set -C
shift 5
COMMAND4
COMMAND5
exit 3 # Only exits the subshell!
)
# The parent shell has not been affected, and the environment is preserved.
COMMAND6
COMMAND7
Hogyan tudnam azt megcsinalni, hogy rogton az egesz szkriptbol lepjen ki?
- 1070 megtekintés
Hozzászólások
Esetleg ez?
COMMAND1
COMMAND2
COMMAND3
(
COMMAND4
COMMAND5
exit 0 # ok
exit 1 # exit
) || exit
COMMAND6
COMMAND7
--
maszili
- A hozzászóláshoz be kell jelentkezni
nemjo
- A hozzászóláshoz be kell jelentkezni
esetleg szignalozas?
COMMAND1
COMMAND2
COMMAND3
parent=$$
trap 'exit 1' SIGUSR1
(
IFS=:
PATH=/bin
unset TERMINFO
set -C
shift 5
COMMAND4
COMMAND5
if [ ... ] ; then kill -USR1 $parent ; fi
...
)
# The parent shell has not been affected, and the environment is preserved.
COMMAND6
COMMAND7
- A hozzászóláshoz be kell jelentkezni
koszi a valaszokat!
maszili sajnos az nem lesz jo, mert a subshellben hiaba van exit kod, azt nem fogja erzekelni a parent shell
signalozas meg vegso megoldasok egyike lehetne..
Van egy konkret peldam, ami talan meg jobban specifikalja a problemat:
ssh root@node "grep -q 32434 /etc/passwd || ( echo 'UID is not unique!'; exit 122 ); command 2;
es az a baj, hogy ha nem talaja a userid-t akkor is tovabb megy.
------
dworld
- A hozzászóláshoz be kell jelentkezni
A peldadban hol is zarod be a "-t? nem mindegy ;]
- A hozzászóláshoz be kell jelentkezni
Van egy konkret peldam, ami talan meg jobban specifikalja a problemat
egyebkent valoban jo lenne konkret pelda, hatha akkor ki lehetne talani valami jo kis megoldast.
- A hozzászóláshoz be kell jelentkezni
"maszili sajnos az nem lesz jo, mert a subshellben hiaba van exit kod, azt nem fogja erzekelni a parent shell"
Kipróbáltam...
maszili@maszili:~$ echo "1" ; (echo "2" ; exit 0) || echo "exit" ; echo "3"
1
2
3
maszili@maszili:~$ echo "1" ; (echo "2" ; exit 1) || echo "exit" ; echo "3"
1
2
exit
3
maszili@maszili:~$
Ha az echo "exit" helyere exit-et teszel akkor befejeződik
--
maszili
- A hozzászóláshoz be kell jelentkezni
A peldad alapjan nem ertem miert van egyaltalan szukseged subshellre. Nem ezt szeretned elerni?
ssh root@node "if grep 32434 /etc/passwd >/dev/null; then echo 'UID is not unique!'; exit 122; else echo 'command2'; fi"
- A hozzászóláshoz be kell jelentkezni
Ido hianyaban kenytelem voltam ezt a megoldast hasznalni, ami tokeletesen mukodik.
------
dworld
- A hozzászóláshoz be kell jelentkezni
Magat az exit kodot nem fogja erzekelni, valoban, viszont a subshell ilyenkor kilep, es beallitja a $? valtozo erteket egy 0-tol eltero ertekre, amit mar lehet figyelgetni. Jo lenne tudni, miert nem jo az a megoldas.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
esetleg igy is lehet:
ssh root@node "grep -q 32434 /etc/passwd && command 2 || echo 'UID is not unique!'"
de amit rubasov irt szerintem jobb, mert itt ha a command 2-nek false a visszateresi erteke, akkor is lefut az echo.
- A hozzászóláshoz be kell jelentkezni
esetleg
(
IFS=:
PATH=/bin
unset TERMINFO
set -C
shift 5
COMMAND4
COMMAND5
exit 3 # Only exits the subshell!
) || exit $?
vagy
) || exit 3
- A hozzászóláshoz be kell jelentkezni
"set -e"-vel nemmegy?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
#( cd /adasda ) || echo 'marika'
-bash: cd: /adasda: No such file or directory
marika
#
--
.
- A hozzászóláshoz be kell jelentkezni