OK, I very, very, very new at this and don't know what I doing. I'm really trying so try to be kind . Here is what I'm trying to do. I have this script that I'm working on. Code: #!/bin/sh # this is my first menu script. # I'm tring to get Zenity to work with it So I can have a full GUI Menu if [ $(whoami) != "root" ] ; then zenity --error \ --text="Please Run This as Root" exit 1 fi clear; echo "Hello, What would you like me to install for you? " sleep 1 # GUI Menu I am Tring to get to work #zenity --height=600 --width=800 \ # --title="Install Menu" \ # --text="Pick your Poison" \ # --list \ # --checklist \ # --column="Pick This" \ # --column="#" \ # --column="Program" \ # --column="Action" \ # "False" "1" "Backgrounds" "(These are a colection from the all over the internet)" \ # "False" "2" "Backgrounds" "(These are a colection from http://wallpapers-n-etc.com)" \ # "False" "3" "icons" "(This will install some extra icon sets from gnome-look)" \ # "False" "4" "Video setup" "(This will install DVD Playback Codecs and Players)" \ # "False" "5" "themes" "(This will add some Extra Themes for gnome)" \ # "False" "6" "compiz fusion" "(This will install Compiz Fusion from Fedora Repo)" \ # "False" "7" "awn" "(This will install the AWN Dock)" \ #The Menu echo "..........................." echo "...........MENU............" echo echo "1 Backgrounds 1" "(These are a colection from the all over the internet)" echo "2 Backgrounds 2" "(These are a colection from http://wallpapers-n-etc.com)" echo "3 icons" "(This will install some extra icon sets from gnome-look)" # echo "4 Video setup" "(This will install DVD Playback Codecs and Players)" #Still working on this echo "5 themes" "(This will add some Extra Themes for gnome)" echo "6 compiz fusion" "(This will install Compiz Fusion from Fedora Repo)" echo "7 awn" "(This will install the AWN Dock)" #Execute Menu Choice read choice while [[ $choice != 0 ]] do case $choice in 1) clear; rpm -Uvh 'http://192.168.2.4/downloads/nfbackgrounds-1-1.fc9.noarch.rpm' P=nfbackgrounds rpm -qa "$P" > tl my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="Backgrounds were installed. Right click on desktop to change Background" else zenity --error \ --text="Backgrounds Were not installed" fi rm t1 ;; 2) clear; rpm -Uvh 'http://192.168.2.3/downloads/nfbackground2-1-1.fc9.noarch.rpm' P=nfbackgrounds2 rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="Backgrounds were installed. Right click on desktop to change Background" else zenity --error \ --text="Backgrounds Were not installed" fi rm t1 ;; 3) clear; yum -y install wget wget 192.168.2.4/downloads/nficons.tar.gz tar zxvf nficons.tar.gz -C /usr/share/icons rm nficons.tar.gz ;; 4) clear; su -c 'rpm -i http://rpm.livna.org/livna-release-8.rpm' wget 192.168.2.4/downloads/dvdplayback.sh sh dvdplayback.sh rm dvdplayback.sh ;; 5) clear; yum -y install wget wget 192.168.2.4/downloads/nfthemesf8.tar.gz tar zxvf nfthemesf8.tar.gz -C /usr/share/themes rm nfthemesf8.tar.gz ;; 6) clear; yum -y install ccsm emerald-themes compizconfig-backend-kconfig compizconfig-backend-gconf fusion-icon* emerald compiz-fusion compiz-fusion-gnome libcompizconfig compiz-gnome compiz-bcop compiz compizconfig-python compiz-fusion-extras compiz-fusion-extras-gnome compiz-kde P=compiz-fusion-gnome rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="compiz fusion was installed." else zenity --error \ --text="compiz fusion was not installed" fi rm t1 ;; 7) clear; yum -y install avant-window-navigator awn-extras P=avant-window-navigator rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="avant-window-navigator was installed." else zenity --error \ --text="avant-window-navigator was not installed" rm tl fi ;; *) clear; echo "You have entered an invalid option!" ;; esac #Menu Loop echo "..........................." echo "...........MENU............" echo echo "1 Backgrounds 1" "(These are a colection from the all over the internet)" echo "2 Backgrounds 2" "(These are a colection from http://wallpapers-n-etc.com)" echo "3 icons" "(This will install some extra icon sets from gnome-look)" # echo "4 Video setup" "(This will install DVD Playback Codecs and Players)" echo "5 themes" "(This will add some Extra Themes for gnome)" echo "6 compiz fusion" "(This will install Compiz Fusion from Fedora Repo)" echo "7 awn" "(This will install the AWN Dock)" read choice done Now what I'm trying to get working is the Zenity Menu. If I take the away the #'s the menu comes up the way I want it to. But my problem is how do I get it to run the commands that I have listed here 1-7? This is where I'm stuck. Hope I'm making sense and someone can help. If i run the script as is It work fine but it has to loop back after one command. I want it to have a GUI and be able to select more then one item to install at a time. Thanks in advance for the help.
Apparently, you are not using the return value(s) of zenity. Try this: HTML: read -a choice <<EOF $(zenity --height=600 --width=800 \ --title="Install Menu" \ --list \ --checklist \ --column="Pick This" \ --column="#" \ --column="Program" \ --column="Action" \ "False" "1" "Backgrounds" "(These are a colection from the all over the internet)" \ "False" "2" "Backgrounds" "(These are a colection from http://wallpapers-n-etc.com)" \ "False" "3" "icons" "(This will install some extra icon sets from gnome-look)" \ "False" "4" "Video setup" "(This will install DVD Playback Codecs and Players)" \ "False" "5" "themes" "(This will add some Extra Themes for gnome)" \ "False" "6" "compiz fusion" "(This will install Compiz Fusion from Fedora Repo)" \ "False" "7" "awn" "(This will install the AWN Dock)" | tr '|' ' ') EOF echo "${choice[@]}"
getting there Burschik, Thank you for the help. If you can suggest some good books out there so I can learn this better that would be great. I'm finding info here and there around the net but don't under stand what allot of the variables are yet. So with this project here is where I stand. The Zenity menu now will run the command but it stays in a loop. It just keeps running the same one. So if I pick 3 programs to install it just loops the 1st one. I know this more advance and probably shouldn't be attempting to do this but I'm more of hands on then reader to understand things. Code: #!/bin/sh # this is my first menu script. # I'm tring to get Zenity to work with it So I can have a full GUI Menu #if [ $(whoami) != "root" ] ; then # zenity --error \ # --text="Please Run This as Root" #exit 1 #fi clear; echo "Hello, What would you like me to install for you? " sleep 1 read -a choice <<EOF $(zenity --height=400 --width=800 \ --title="Install Menu" \ --list \ --checklist \ --column="Pick This" \ --column="#" \ --column="Program" \ --column="Action" \ "False" "1" "Backgrounds" "(These are a colection from the all over the internet)" \ "False" "2" "Backgrounds" "(These are a colection from http://wallpapers-n-etc.com)" \ "False" "3" "icons" "(This will install some extra icon sets from gnome-look)" \ "False" "4" "Video setup" "(This will install DVD Playback Codecs and Players)" \ "False" "5" "themes" "(This will add some Extra Themes for gnome)" \ "False" "6" "compiz fusion" "(This will install Compiz Fusion from Fedora Repo)" \ "False" "7" "awn" "(This will install the AWN Dock)" | tr '|' ' ') EOF echo "${choice[@]}" while [[ $choice != 0 ]] do case $choice in 1) clear; rpm -Uvh 'http://192.168.2.4/downloads/nfbackgrounds-1-1.fc9.noarch.rpm' P=nfbackgrounds rpm -qa "$P" > tl my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="Backgrounds were installed. Right click on desktop to change Background" else zenity --error \ --text="Backgrounds Were not installed" fi rm t1 ;; 2) clear; rpm -Uvh 'http://192.168.2.3/downloads/nfbackground2-1-1.fc9.noarch.rpm' P=nfbackgrounds2 rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="Backgrounds were installed. Right click on desktop to change Background" else zenity --error \ --text="Backgrounds Were not installed" fi rm t1 ;; 3) clear; yum -y install wget wget 192.168.2.4/downloads/nficons.tar.gz tar zxvf nficons.tar.gz -C /usr/share/icons rm nficons.tar.gz ;; 4) clear; su -c 'rpm -i http://rpm.livna.org/livna-release-8.rpm' wget 192.168.2.4/downloads/dvdplayback.sh sh dvdplayback.sh rm dvdplayback.sh ;; 5) clear; yum -y install wget wget 192.168.2.4/downloads/nfthemesf8.tar.gz tar zxvf nfthemesf8.tar.gz -C /usr/share/themes rm nfthemesf8.tar.gz ;; 6) clear; yum -y install ccsm emerald-themes compizconfig-backend-kconfig compizconfig-backend-gconf fusion-icon* emerald compiz-fusion compiz-fusion-gnome libcompizconfig compiz-gnome compiz-bcop compiz compizconfig-python compiz-fusion-extras compiz-fusion-extras-gnome compiz-kde P=compiz-fusion-gnome rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="compiz fusion was installed." else zenity --error \ --text="compiz fusion was not installed" rm t1 fi ;; 7) clear; yum -y install avant-window-navigator awn-extras P=avant-window-navigator rpm -qa "$P" > t1 my_size=$( wc -l < t1 ) echo "Checking install status" if [[ $( rpm -qa $P ) =~ ${P} ]] then zenity --info \ --text="avant-window-navigator was installed." else zenity --error \ --text="avant-window-navigator was not installed" rm tl fi ;; *) clear; echo "You have entered an invalid option!" ;; esac done Thanks again in advance
Try the Advanced Bash Scripting Guide at http://tldp.org/LDP/abs/html/ You need to understand that "choice" is an array variable. For this reason, "$choice" only returns the first element of the array. You need to iterate over all array elements.