Portál AbcLinuxu, 5. května 2025 15:02
#!/bin/bash # main menu while [ 1 ]; do echo "1) Gimp" echo "2) Inkscape" echo "3) Exit" echo menu_choice=""; read -p "Zadej volbu: " menu_choice case $menu_choice in 1) gimp >/dev/null 2>&1 & exit 0; ;; 2) inkscape >/dev/null 2>&1 & exit 0; ;; 3) exit 0; ;; *) echo; echo "ŠPATNÁ VOLBA!" echo; sleep 3; clear ;; esac done exit 0Pokud tento skript spustím v příkazové řádce např. použitím
./skript.sh
, skript se skutečně sám ukončí např. po volbě č. 1 a terminál zůstane volný k použití. Akorát já tuto operaci potřebuji na klávesovou zkratku. Používám XFCE prostředí, tudíž aby toto bylo možné, je potřeba prve zadat příkaz pro rozjetí skriptu v novém okně terminálu. Našel jsem si tedy, že zadáním xfce4-terminal -x ./script.sh
by se měl skript spustit v novém okně a jakmile se tak stane, volba č. 1, která by měla aplikaci spustit, jí skutečně spustí, jenže v zápětí se skript sám ukončí a spolu s ním se zavře i úloha kterou spouštěl, což ale nechci. Chci pouze spustit program konkrétní volbou a nechat ukončit samotný skript.
Je nějaký způsob, aby to fungovalo tak jak potřebuji?
Děkuji za pomoc.
xfce4-terminal -e "sh -ic \"%f; exec bash \""
Pokud místo %f dáš cestu a na konec přidáš &, tak to udělá to co požaduješ, tzn. Gimp zůstane běžet a Terminál se zavře. Stačí když tento příkaz navážeš na klávesovou zkratku:
xfce4-terminal -e "sh -ic \"/path/to/script.sh; exec bash \"&"
#!/bin/sh $(yad --width=200 --height=150 --list --separator='' --column="Vyber si program" gimp inkscape) &>/dev/null
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.