Shell Script->AYUDA.

Buenas. Estoy intentando instalar una serie de paquetes en Ubuntu, de una lista que yo mismo hago y le paso al script.

el archivo que le paso es un fichero.txt con los paquetes de la siguiente forma:
paquete1
paquete2
paquete3
...

El problema viene al leer el fichero, ya que puedo leer una cadena de texto en forma de lista(for linea in $(cat ficheros.txt); do echo "$linea" ; done) pero no puedo hacer lo contrario. Es decir, no sé como al "apt-get install..." pasarle los paquetes de la siguiente forma: apt-get install paquete1 paquete2 paquete 3... y así hasta que recorra toda la lista. ¿Alguien podría ayudarme?
AUX=`cat fichero.txt`
apt-get install $AUX

Hay más formas, no sé si hay una mejor, supongo que sí pero ésta te vale.

De hecho esto también te serviría:
apt-get install `cat fichero.txt`
amuchamu escribió:
AUX=`cat fichero.txt`
apt-get install $AUX

Hay más formas, no sé si hay una mejor, supongo que sí pero ésta te vale.

De hecho esto también te serviría:
apt-get install `cat fichero.txt`

Gracias, pero creo que no me has entendido. Yo quiero que me instale todos los paquetes listados de la siguiente forma:

paquete1
paquete2
paquete3
...

Si hago lo que me has dicho, me instala sólo el primero. No recorre la lista para ir instalando todos.
Sí que te he entendido, lo que no me explico cómo no te funciona.

[samuel@phenom Desktop]$ cat f
firefox
bash
kernel26
conky
[samuel@phenom Desktop]$ echo `cat f`
firefox bash kernel26 conky
[samuel@phenom Desktop]$ sudo pacman -S --needed `cat f`
Contraseña:
precaución: firefox-3.5.5-1 esta al día -- saltando
precaución: bash-4.0.035-1 esta al día -- saltando
precaución: kernel26-2.6.31.6-1 esta al día -- saltando
precaución: conky-1.7.2-5 esta al día -- saltando


Con pacman sí me funciona, no tengo apt para probar ^^

Bueno, pues otra opción:

AUX=""
while read linea; do
AUX="$AUX $linea"
done < ficheros.txt
apt-get install $AUX


Edito:

Otra opción, que nunca recuerdo, es tr.

apt-get install `cat ficheros.txt | tr '\n' ' '`


Debería servir.
Muchas gracias amigo, me sirvió tu ayuda.

Ahora tengo otro problemita con un menú que estoy haciendo y quiero que sea cíclico, es decir, que al escoger la opción que sea siga ejecutándose. A ver si me podéis ayudar.

echo "BIENVENIDO AL MENU. Escoge opción"
echo "1)Mostrar X"
echo "2)Mostrar Y"
echo "3)Salir"
read opcion
case $opcion in
1)
metodo1
;;

2)
metodo2
;;

3)
exit 1
;;

*) echo "Opción incorrecta"
;;
esac

Algo así, pero no quiero que salga del menu, hasta que lo diga.

4)
metodo4
;;
MientrasQue <condición> hacer
     mostrar menú y pedir opción
     realizar acción
finMQ


La condición empieza siendo cierta y sólo se cambiará en la opción que corresponda a salir.

Es decir, que has de anidar en un while el código que has puesto y añadir una condición, por ejemplo, una variable.
5 respuestas