Portál AbcLinuxu, 15. května 2024 23:39
exec su -c "nejakycommand"Pokud zabiju mujskript.sh, tak su vypíše "Session terminated, terminating shell...killed" a vždy se mi vrátí exit code 1, ačkoliv nejakycommand vrací 0. Jak zajistit, aby se vracel skutečný exit code commandu v su?
Řešení dotazu:
su
proste „rucne“ vratit kod posledniho prikazu (promenna $?
)?
su -c "nejakycommand; exit $?"
trap 'kill -TERM $PID1; wait $PID1; exit $A' TERM INT su -c "nejakyprikaz" A=$? PID1=$!ale to mi přijde jako pěkná prasárna.
Nijak, protože exec
zajistí, že adresní prostor původního shellu se nahradí tím nějakým commandem, tedy jinými slovy že nějaký command se stane přesně tím procesem, kterým byl původně shell.
Řešením je nepoužívat exec
a místo toho ve skriptu spouštět nějaký command běžným způsobem, tedy aby se shell forknul a počkal na výsledek nějakého commandu. Pak se dá s tím výsledkem dál pracovat, jak už někdo psal výše.
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.