Portál AbcLinuxu, 1. listopadu 2025 05:20
#!/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 0
Pokud 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.