Dudas con con partes de mi script [Bash]

Iniciado por Afsoon, 30 Abril 2010, 19:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Afsoon

Hola buenas, estoy haciendo un script para ubuntu para la version 10.04, la gente sabra que ya ha salido la ultima version, bien decidi probar el script, pos hay partes que no me furulan y tenian que ser las partes mas importantes del programa, ire poniendo las partes de los que no me funcionan


Código (bash) [Seleccionar]

#!/bin/bash

pog=`zenity --title="P.A.U" --text="Seleccione los programas que desee instalar" --width="1000" --height="900" \
--list --column="Select" --column="Opciones" \
--checklist TRUE "Wine" TRUE "Gimp"  \
TRUE "Pidgin" TRUE "Chromium" TRUE "Compizfusion" TRUE "AWN"  TRUE "Docky"  TRUE "GnomeDo"  TRUE "Inkscape"  \
TRUE "Eclipse"  TRUE "Netbeans"  TRUE "Vim" TRUE "Skype" TRUE "K3B"  TRUE "Mozilla Thunderbird" TRUE "Amule" \
TRUE "Tucan Manager" TRUE "Vlc" TRUE "Comix" FALSE "K3b.Con las librerias de KDE" TRUE "JDownloader" \
TRUE "Amarok" TRUE "Atool" TRUE "Guake" TRUE "Emesene" TRUE "Gparted" TRUE "Google Chrome" TRUE "Virtualbox" \
TRUE "Hoz"  TRUE "Dvd::rip" TRUE "Avidemux" FALSE "Yakuake.Para KDE" TRUE "Alltray"`
if [ $? -eq 0 ]
then
for i in $pog ; do
echo ""
echo "Has elegido la opcion $i"
if [ "$i" = "Wine" ]
then
echo "chekpoint"
sudo apt-get -y install wine
clear
fi
if [ "$i" = "Gimp" ]
then
echo "checkpoint"
sudo sh -c "echo "deb http://ppa.launchpad.net/matthaeus123/mrw-gimp-svn/ubuntu lucid main" >> /etc/apt/sources.list" && sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 405A15CB && sudo apt-get update && sudo apt-get -y install gimp
clear
fi
if [ $i = "Pidgin" ]
then
sudo add-apt-repository ppa:pidgin-developers && sudo apt-get update && sudo aptitude -y install pidgin
clear
fi
if [ $i = "Chromium" ]
then
sudo add-apt-repository ppa:chromium-daily/ppa && sudo apt-get update && sudo apt-get -y install chromium-browser chromium-browser-l10n
clear
fi
if [ $i = "Compizfusion" ]
then
sudo add-apt-repository ppa:compiz && sudo apt-get update && sudo aptitude -y install simple-ccsm compizconfig-settings-manager emerald && install fusion-icon
clear
fi
if [ $i = "AWN" ]
then
sudo apt-get update && sudo apt-get -y install avant-window-navigator awn-extras-applets
clear
fi
if [ $i = "Docky" ]
then
sudo add-apt-repository ppa:ricotz/testing && sudo apt-get update && sudo apt-get -y install docky
clear
fi
if [ $i = "GnomeDo" ]
then
sudo add-apt-repository ppa:do-core && sudo apt-get update && sudo apt-get -y install gnome-do gnome-do-docklets gnome-do-plugins
clear
fi
if [ $i = "Inkscape" ]
then
sudo aptitude -y install inkscape
clear
fi
if [ $i = "Eclipse" ]
then
sudo aptitude -y install eclipse
clear
fi
if [ $i = "Netbeans" ]
then
sudo aptitude -y install netbeans
clear
fi
if [ $i = "Vim" ]
then
sudo aptitude -y install vim
clear
fi
if [ $i = "Skype" ]
then
cd /tmp      
wget http://download.skype.com/linux/skype-ubuntu-intrepid_2.1.0.81-1_${arch}.deb                          
sudo dpkg -i --force-all skype-ubuntu-intrepid_2.1.0.81-1_${arch}.deb                          
sudo apt-get -y --force-yes install -f -y                          
rm skype-ubuntu-intrepid_2.1.0.81-1_${arch}.deb
clear
fi
if [ $i = "K3B" ]
then
sudo aptitude -y install k3b
clear
fi
if [ $i = "Mozilla Thunderbird" ]
then
sudo aptitude -y install  mozilla-thunderbird thunderbird-locale-es-es
clear
fi
if [ $i  = "Amule" ]
then
sudo aptitude -y install amule
clear
fi
if [ $i = "Tucan Manager" ]
then
sudo aptitude -y install tucan
clear
fi
if [ $i = "Vlc" ]
then
sudo add-apt-repository ppa:c-korn && sudo apt-get update && sudo apt-get -y install vlc
clear
fi
if [ $i = "Comix" ]
then
sudo aptitude -y install comix
clear
fi
if [ $i = "K3b.Con las librerias de KDE" ]
then
sudo aptitude install k3b && sudo aptitude -y install kde-i18n-es k3b-i18n
clear
elif [ $i = "JDownloader" ]
then
wget http://212.117.163.148/jd.sh
chmod +x jd.sh
sh jd.sh
java -jar ~/.jd/JDownloader.jar
clear
fi
if [ $i = "Amarok" ]
then
sudo add-apt-repository ppa:kubuntu-ppa/backports && sudo apt-get update && sudo apt-get -y install amarok
clear
fi
if [ $i = "Atool" ]
then
sudo aptitude -y install atool
clear
fi
if [ $i = "Guake" ]
then
sudo apt-get -y install guake
clear
fi
if [ $i = "Emesene" ]
then
sudo apt-get -y install emesene
clear
fi
if [ $i = "Gparted" ]
then
sudo aptitude -y install gparted
clear
fi
if [ $i = "Google Chrome" ]
then
sudo add-apt-key ppa:chromium-daily/ppa && sudo apt-get update && sudo apt-get -y install chromium-browser
clear
fi
if [ $i = "Virtualbox" ]
then
cd /etc/apt/
echo "deb http://download.virtualbox.org/virtualbox/debian karmic non-free" >> sources.list
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
if [ "i686" = `uname -m` ]
then
cd /home/$USER/
wget http://download.virtualbox.org/virtualbox/3.1.6/virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
dpkg -i --force-all virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
sudo apt-get install -f -y
rm virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
else
cd /home/$USER/
wget http://download.virtualbox.org/virtualbox/3.1.6/virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
dpkg -i --force-all virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
sudo apt-get install -f -y
rm virtualbox-3.1_3.1.6-59338_Ubuntu_karmic_${arch}.deb
fi
fi
if [ $i = "Hoz" ]
then
sudo apt-get -y install hoz-gui
fi
if [ $i = "Dvd::rip" ]
then
sudo aptitude -y install transcode && sudo aptitude -y install dvdrip
fi
if [ $i = "Avidemux" ]
then
sudo aptitude -y install avidemux
fi
if [ $i = "Yakuake.Para KDE" ]
then
sudo aptitude -y install yakuake
fi
if [ $i = "Alltray" ]
then
sudo aptitude -y install alltray
fi
done
fi


Causas: Esta parte va bien pero cuando eligo varias opciones no se instala ningun programa


Has elegido la opcion Wine|Gimp


Siguiente

Código (bash) [Seleccionar]

upd=`zenity --title="Actualizar" --text="Has seleccionado Actualizar, Limpiar\n. Hay dos tipos de actualizaciones una normal y otro mas sostificado.\n Si acabas de instalar mejor haz una sostificada. \n Al contrario si lo tenias instalado haz una normal.\n O si deseas limpiar los paquetes innecesarios de tu sistema."  \
   --width="500" --height="450" \
     --list --column="Select" --column="Opciones" \
           --checklist FALSE "Actualizacion normal" FALSE "Actualizacion sostificada" FALSE "Limpiar Ubuntu"`
if [ $? -eq 0 ]
then
for updopc in $upd
do
if [ $updopc = "Actualizacion normal" ]
then
zenity --info --title="INFO" --text="Este proceso lo mas seguro que no tarde mucho.\n Espere a que salga la ventana de informacion"
sudo aptitude update && sudo apt-get update
sleep 2
zenity --info --title="INFO" --text="Ya se ha actualizado su sistema"
clear
break
elif [ $updopc = "Actualizacion sostificada" ]
then
echo ""
zenity --info --title="INFO" --text="Este proceso puede que tarde mucho, espere a que te salga la ventana\n de informacion"
sudo aptitude update && sudo apt-get update
sudo aptitude upgrade && sudo apt-get upgrade
zenity --info --title="INFO" --text="Ya se ha actualiza tu sistema"
sleep 2
clear
fi
if [ $updopc = "Limpiar Ubuntu" ]
then
echo "chekpoint"
zenity --info --title="Limpieza.." --text="Ahora empezara la limpieza de Ubuntu"
    sudo apt-get autoremove && sudo apt-get autoclean && sudo apt-get clean
    OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
    CURKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')
    LINUXPKG="linux-(image|headers|ubuntu-modules|restricted-modules)"
    METALINUXPKG="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"
    OLDKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $LINUXPKG |grep -vE $METALINUXPKG|grep -v $CURKERNEL)
    YELLOW="\033[1;33m"
    RED="\033[0;31m"
    ENDCOLOR="\033[0m"
    zenity --info --title="Limpiando" --text="$YELLOW""Cleaning apt cache...""$ENDCOLOR"
    sudo aptitude clean
    zenity --info --title="Limpiando" --text="$YELLOW""Removing old config files...""$ENDCOLOR"
    sudo aptitude purge $OLDCONF
    zenity --info --title="Limpiando" --text="$YELLOW""Removing old kernels...""$ENDCOLOR"
    sudo aptitude purge $OLDKERNELS
    zenity --info --title="Limpiando" --text="$YELLOW""Emptying every trashes...""$ENDCOLOR"
    rm -rf /home/*/.local/share/Trash/*/** &> /dev/null
    rm -rf /root/.local/share/Trash/*/** &> /dev/null
    clear
    mop=`zenity --title="P.A.U" --text="¿Tenia usted instalado mozilla-thunderbird?" \
--list --column="Select" --column="Opcion" \
--checklist FALSE "SI" FALSE "NO"`

fi
done
fi


Su error que cuando se selecciona una opcion no se ejecuta y no se me ocurre que hacer

y este es el ultimo

Código (bash) [Seleccionar]

var=otro
if [ $var = "otro" ]
then
ot=`zenity --title="P.A.U" --text="Has entrado en el menu de otros.\n Aqui van diferentes opciones" \
--width="500" --height="450" \
--list --column="Select" --column="Opciones" \
--checklist FALSE "Iconos del menu sistema" FALSE "Quitar sonido de inicio" FALSE "Poner el sonido de inico"  FALSE "Instalar Sharpfonts" FALSE "Arreglar el 'apt-get update' con los repositorios de Google"  FALSE "Resetear el 'apt-get update'" FALSE "Borrar Ubuntu-docs" FALSE "Instalar Ubuntu-docs" FALSE "Botones a la Izquierda" FALSE "Botones a la Derecha" FALSE "Instalar paquetes basicos de compilacion" FALSE "Instalar las librerias de desarrollo del kernel"`
if [ $? -eq 0 ]
then
for otopc in $ot
do
if [ "$otopc" = "Iconos del menu sistema" ]
then
gconftool-2 --type Boolean --set /desktop/gnome/interface/menus_have_icons True && killall gnome-panel
fi
if [ "$otopc" = "Quitar sonido de inicio" ]
then
sudo -u gdm gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool false
                sudo -u $ON_USER "DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool false
fi
if [ "$otopc" = "Poner el sonido de inicio" ]
then
sudo -u gdm gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool true
                sudo -u $ON_USER "DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool true
fi
if [ "$otopc" = "Instalar Sharpfonts" ]
then
zenity --info --text="Esto tardara dependiendo de tu conexion"
cd /tmp/
zenity --info --text="Ahora se instalara cabextract"
sudo apt-get -y install cabextract
zenity --info --text="Ya se ha instalado.\n Ahora se descargar lo necesirio"
wget http://sharpfonts.com/fonts/andale32.exe
                wget http://sharpfonts.com/fonts/arial32.exe
                wget http://sharpfonts.com/fonts/arialb32.exe
                wget http://sharpfonts.com/fonts/comic32.ex
                wget http://sharpfonts.com/fonts/courie32.exe
                wget http://sharpfonts.com/fonts/georgi32.exe
                wget http://sharpfonts.com/fonts/impact32.exe
                wget http://sharpfonts.com/fonts/tahoma32.exe
                wget http://sharpfonts.com/fonts/times32.exe
                wget http://sharpfonts.com/fonts/trebuc32.exe
                wget http://sharpfonts.com/fonts/verdan32.exe
                wget http://sharpfonts.com/fonts/webdin32.exe
sudo mkdir /usr/share/fonts/truetype/
cabextract -d /usr/share/fonts/truetype/ andale32.exe arial32.exe arialb32.exe comic32.exe courie32.exe georgi32.exe impact32.exe tahoma32.exe times32.exe trebuc32.exe verdan32.exe webdin32.exe
wget http://sharpfonts.com/fontconfig.tbz
                tar xvjpf fontconfig.tbz -C /etc/fonts/
                rm -r /tmp/*.exe
                rm /tmp/fontconfig.tbz
fi
if [ "$otopc" = "Arreglar el 'apt-get update' con los repositorios de Google" ]
then
echo "Acquire::http::Pipeline-Depth \"0\";" | sudo tee -a /etc/apt/apt.conf.d/90localsettings > /dev/null
fi
if [ "$otopc" = "Resetear el 'apt-get update'"]
then
sudo rm /etc/apt/apt.conf.d/90localsettings_back; sudo cp /etc/apt/apt.conf.d/90localsettings /etc/apt/apt.conf.d/90localsettings_back; cat /etc/apt/apt.conf.d/90localsettings_back | sudo sed -e '/^Acquire::http::Pipeline-Depth.*/d' > /etc/apt/apt.conf.d/90localsettings; sudo rm /etc/apt/apt.conf.d/90localsettings_back
fi
if [ "$otopc" = "Borrar Ubuntu-docs" ]
then
zenity --info --text="Esto te liberara 256MB"
sudo apt-get -y remove ubuntu-docs
fi
if [ "$otopc" = "Instalar Ubuntu-docs" ]
then
sudo apt-get -y install ubuntu-docs
fi
if [ "$otopc" = "Botones a la Izquierda" ]
then
gconftool-2 --type string --set /apps/metacity/general/button_layout "menu:close,minimize,maximize"
fi
if [ "$otopc" = "Botones a la Derecha" ]
then
zenity --info --title="INFO" --text="Ahora se cambiara los botones"
gconftool-2 --type string --set /apps/metacity/general/button_layout "close,minimize,maximize:menu"
fi
if [ "$otopc" = "Instalar paquetes basicos de compilacion" ]
then
sudo aptitude -y install build-essential
fi
if [ "$otopc" = "Instalar las librerias de desarrollo del kernel" ]
then
sudo aptitude -y install linux-headers-`uname -r`
fi
done
fi
       fi


Este no se ejecuta ninguna de las opciones que hay y este es el error que me da cuando ejecuto alguna opcion


[: 90: missing ]
[: 90: missing ]


Lo siento por el post tan largo o era poner esto para ir diciendo parte por parte o poner todo el script de mas de 400 lineas, lo he estado dando vueltas pero no he conseguido como hacerlo funcionar si alguien me puede ayudar
Código (bash) [Seleccionar]

leogtz

Citarfurulan

Aviso
La palabra furular no está en el Diccionario.


Por otra parte, no creo poder ayudarte (y los demás tampoco), porque el código es ineficiente, usas demasiados IF's, ni si quiera usas "elifs"; ya se te había hecho la recomendación que adaptarás tu código a "case", y no lo has hecho.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Afsoon

Todos los script de instalacion de programas que hay usan IF's, de todos los que he mirado ninguno tiene case ya que no te deja elegir varias opciones a la vez y eso en los programas es ineficiente para eso lo haces escribiendolo y si te parece ineficiente el codigo no se lo va a parecer a todo el mundo lo mismo, yo he publicado esto para saber donde tengo el error no para que me digan que el codigo es ineficiente y que uso demasiados IF's es que todos los script de instalacion usan IF's ninguno usaba "case"

Afsoon

ya lo he resuelto y gracias por la NO ayuda

leogtz

De nada, y anda y sigue cometiendo los mismos errores, así llegarás muy lejos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com