P1.1.sh Realiza un script que compruebe si dos cadenas que se le
pasan como parámetros son iguales o no.
# !/bin/bash
if test $1 == $2
# compruebo si los parametros pasados por lista de comando son iguales
#necesito el doble igual porque si no lo que hago es una asignación
then
        echo "las palabras son
iguales"
else
        echo "las palabras son
distintas" fi
P1.2.sh Realiza un script que solicite un
número y si es mayor que 200 muestre el mensaje “mayor que 200, grande”.
#!/bin/bash
echo "introduce
un número"
read num1
if test $num1 -gt 200
then
        echo "el número es mayor que
200"
else
        echo "el número es más chico"
fi
P1.3.sh Realiza un script que muestre por
pantalla la pregunta “¿Quién descubrió América?” y, según la respuesta, muestre
el mensaje “Es correcto” o “No es correcto”.
#!/bin/bash
echo "quien
descubrio America?"
read nombre1
if test $nombre1 ==
"Colon" || $nombre1=="colon" || $nombre1=="COLON"
# para poner un or
en script es con doble ||
# el and se pone
con &&
 then 
        echo "Es correcto"
else 
        echo "No es correcto"
fi
P1.4.sh Crea un script que solicite un
número y diga si es par o impar.
#!/bin/bash 
echo "dame un número" 
read
num1 
resto=`expr
$num1 % 2` 
if test
$resto -eq 0 
then 
         echo
"es par" 
else 
         echo
"es impar" 
fi
P1.5.sh Pasa dos valores por línea de
comando y realiza la suma, la resta, la multiplicación, la división y el resto.
suma=`expr $1 + $2` 
echo "la suma es $suma" 
resta=`expr $1 - $2` 
echo "la resta es $resta" 
multiplicacion=`expr $1 \* $2` 
echo "la multiplicación es
$multiplicacion" 
division=`expr $1 / $2` 
echo "la división es $division" 
resto=`expr $1 % $2` 
echo "el resto es $resto"
P1.6.sh
Crear un script que:
a.
Muestre la carpeta dónde estoy situado
b.
Usuarios conectados
c.
Quien soy
d.
Ver el contenido del directorio personal del usuario conectado
e.
Ver la fecha y hora actual.
#!/bin/bash
pwd 
whoami 
who 
ls -l
~/ 
date
P1.7.sh
Realizar un script que nos pregunta la edad por teclado y que nos conteste:
a.
Si menor que 10 “eres muy joven”
b.
Entre 10 y 25 “que mala edad tienes”
c.
Más de 25 “que bien te veo”
#!/bin/bash 
echo "que edad tienes?" 
read
edad 
if test
$edad -lt 10 
then 
         echo
"Eres muy joven" 
else  
         if test $edad -gt 25 
         then 
                   echo
"que bien te veo" 
         else
                   echo
"que mala edad tienes" 
         fi
fi
P1.8.sh Con “case” un scripts que nos
pregunte “¿Quién descubrió América?”, comprobar respuesta correcta y falsa.
#!/bin/bash
echo "quien descubrio america?"
read nombre
case $nombre in
       
Colon)          echo "la respuesta es
correcta";;
       
colon)          echo "la
respuesta es correcta";;
       
COLON)          echo "la
respuesta es correcta";;
      
“Cristobal Colon”) echo “la respuesta es correcta”;;
       
*)              echo "la
respuesta no es correcta";;
esac
P2.1.sh Realizar un script que pida dos
valores por teclado y después muestre un menú: 
 1.-
Suma.  
 2.-
Resta. 
 3.-
Multiplicación. 
 4.-
División. 
 5.-
Es par el 1º número. 
 6.-
Es impar el 2º número. 
#!/bin/bash
echo
"dame un número"
read
num1
echo
"dame un número menor"
read
num2
echo
"elige una opción entre el 1 y el 6"
read
opcion
case
$opcion in
        1)     
echo "hace la suma"
                suma=`expr $num1 + $num2`
                echo "la suma es $suma";;
        2)     
echo "hace la resta"
                resta=`expr $num1 - $num2`
                echo "la resta es $resta";;
        3)   
  echo "hace la
multiplicacion"
                multiplicacion=`expr $num1 \*
$num2`
                echo "la multiplicacion es
$multiplicacion";;
        4)     
echo "hace la division"
                division=`expr $num1 / $num2`
                echo "la division es
$division";;
        5)     
echo "mira si el primer número es par"
                resto=`expr $num1 % 2`
                if test $resto -eq 0
                then
                        echo "es par"
                else
                        echo "es impar"
                fi;;
        6)      echo "mira si el segundo número es
impar"
                resto2=`expr $num2 % 2`
                if test $resto2 -eq 1
                then
                        echo "es impar"
                else
                        echo "es par"
                   fi;;
esac
P2.2.sh
Realiza un script que pida tres nombres por teclado. Los almacene en un fichero
llamado nombres.txt. Ordene alfabéticamente dicho fichero llamándolo
nombres-ordenado.txt y lo muestre tanto desordenado como ordenado.
#!/bin/bash
echo "dame un nombre"
read nombre1
echo "dame otro nombre"
read nombre2
echo "dame otro nombre"
read nombre3
echo "almacena los nombres en
un fichero"
echo "$nombre1" >  nombres.txt
echo "$nombre2" >>
nombres.txt
echo "$nombre3" >>
nombres.txt  
echo "ordenar el fichero y
renombrarlo"
sort 
nombres.txt > nombres-ordenado.txt 
echo "muestralo ordenado"
sort nombres-ordenado.txt  
echo "muestralo
desordenado"
cat nombres.txt  
P2.3.sh
Crea un script que pida dos números por teclado. Si el primero es mayor que el
segundo los restamos. En caso contrario mostramos un mensaje indicando que no se
pueden restar.
#!/bin/bash
echo "dame un número"
read num1
echo "dame otro número"
read num2
if test
$num1 -gt $num2
then 
        resta=`expr $num1 - $num2`
        echo "la resta es $resta"
else            
        echo "no se pueden restar"
fi
P2.4.sh
Crea un script que pida dos números por línea de comando. Si el primero es
mayor que el segundo los restamos. En caso contrario mostramos un mensaje
indicando que no se pueden restar.
#!/bin/bash
#introduces dos números por
parámetros
if test $1
-gt $2
then 
        resta=`expr $1 - $2`
        echo
"la resta es $resta"
else            
        echo "no se pueden restar"
fi
P2.5.sh Hacer un script en el que después de introducir por
línea de comandos valores, me muestre:
Todos los valores que he introducido: $*
El nombre del fichero: $0
Nº de parámetros introducidos: $#
El primer parámetro: $1
El segundo parámetro: $2
#!/bin/bash
echo "mostrar todos los $*
introducidos"
echo "mostrar  el nombre del fichero $0"
echo "mostrar el número de
parámetros introducidos $#"
echo "mostrar el primer
parámetro $1"
echo "mostrar el segundo
parámetro $2"
P3.1.sh Escribir los 10 primeros números naturales. While.
#!/bin/bash
echo " mostrar los 10 numeros
naturales con while"
num=0
while test $num -le 10
do
        echo "$num"
        num=`expr $num + 1`
done
P3.2.sh
Escribir los 10 primeros números naturales. Until.
#!/bin/bash
echo " mostrar los 10 numeros
naturales con until"
num=0
until test $num -gt 10
do
        echo "$num"
        num=`expr $num + 1`
done
P3.3.sh
Escribir los 20 primeros números pares. While.
#!/bin/bash
echo " mostrar los 20 primeros
numeros pares con while"
num=0
while test $num -le 20
do
        echo "$num"
        num=`expr $num + 2`
done
P3.4.sh
Escribir los 20 primeros números pares. Until.
#!/bin/bash
echo " mostrar los 20 primeros
numeros pares con until"
num=0
until test $num -gt 20
do
       echo "$num"
       num=`expr $num + 2`
done
P3.5.sh Pide un nombre de fruta por teclado hasta que
escriba “salir” y llévalos a un fichero llamado p58-frutas.txt. Muestra el
contenido del fichero ordenado. 
#! /bin/bash
echo "pedir un nombre de fruta
y seguir hasta que se diga salir"
echo "dime una fruta"
read fruta
while test $fruta == salir
do
echo "$fruta"
fruta==* >> p58-frutas.txt
cat p58-frutas.txt
done
P3.6. sh Pide un número por teclado y muestra la tabla de
multiplicar de ese número. While 
#! /bin/bash
echo " dame un número y muestra
su tabla de multiplicar"
echo "dame un número"
read numero
n=0
while test $numero -le 10
do
result ='expr $n \* $numero'
echo
"$numero * $n”
n='expr
$n + 1'
done
P3.7.sh Pide un número por teclado y muestra la tabla de
multiplicar de ese número. Until 
#! /bin/bash
echo " dame un número y muestra
su tabla de multiplicar"
echo "dame un número"
read numero
n=0
until test $numero -gt 10
do
result ='expr $n \* $numero'
echo "$numero * $n “
n='expr $n + 1'
done
P4.1. sh Escribir los 10 primeros números naturales. For
#!/bin/bash
echo " mostrar los 10 numeros
naturales con for"
for ((i=0; i< 11; i ++))
do
        echo
"numero:$i"
done
P4.2.sh Escribir los 20 primeros
números pares.
#! /bin/bash
echo "escribir los 20 primeros
numeros pares con for"
for ((i=0; i<21; i++))
do      
       
multi=`expr 2 \* $i`
       echo "$multi"
done
P4.3.sh
Escribir los 20 primeros números impares.
     
#! /bin/bash
    
echo "escribir los 20 primeros numeros impares con for"
    
for ((i=0;
i<20; i++))
      do      
    suma=`expr
$i + $i + 1`
        echo "$suma"
done
P4.4.sh Pide un número por teclado y muestra la
tabla de multiplicar de ese número.
#! /bin/bash
echo "dame un numero y imprime tabla de
multiplicar"
read num
for ((i=1; i<=10; i++))
do
        multi=`expr
$i \* $num`
       
echo
"$num * $i=$multi"
done
por linea de comando
#! /bin/bash
echo "mostrar tabla de multiplicar de
$1"
for ((i=1;
i<=10; i++))
do
       
multi=`expr $i \* $1`
       
echo "$1
* $i=$multi"
done
P4.5.sh Hacer
un script mediante el cual todos los valores que introduzcamos por línea de
comandos nos lo muestre después de ejecutar el script.
#!/bin/bash
for
contador in $*
do
      echo
“$contador” 
done
echo "mostrar todos los $*
introducidos"
P4.6.sh Hacer un script mediante el cual cree
un fichero p511pares.txt con los 100 primeros números pares.
#!/bin/bash
echo "crear fichero p511pares.txt
con los 100 primeros numeros pares"
for ((i=0; totalpares<=100;
i++))
do      
          resto=`expr $i % 2`
      if test $resto -eq 0
      themn
            echo “$i”
            totalpares=`expr $totalpares + 1
      fi
done
echo "$totalpares"
>> ~/misscripts/p511pares.txt
P5.1.sh Realizar un script que
muestre los números que hay entre dos nº pasados por línea de comando, el
cuadrado de cada uno, la suma de ellos, la multiplicación de cada uno. 
Si el primer nº es mayor que el 2º
debemos tenerlo en cuenta y debe funcionar. Deben pasarse exactamente dos
parámetros.
#!/bin/bash
clear
echo "debes introducir dos
numeros por parametros, el primero mayor que el segundo”
resultado=`expr $1 - $2`
echo "los numeros que hay
entre $1 y $2 son:$resultado"
cuadrado1=`expr $1 \* $1`
echo "el cuadrado de $1 es
$cuadrado1"
cuadrado2=`expr $2 \* $2`
echo "el cuadrado de $2 es
$cuadrado2"
suma=`expr $1 + $2`
echo "la suma de $1 y $2
es:$suma"
multiplicacion=`expr $1 \* $2`
echo "la multiplicacion de $1
y $2 es:$multiplicacion"
P5.2.sh Mostrar por pantalla el día
de la semana en el que estamos con todas las letras. 
#!/bin/bash
clear
date +%A
P5.3.sh Realiza un script que
escriba al revés una palabra.
#!/bin/bash
clear
echo "para salir debes pulsar
control + c"
echo "escribe la palabra que
quieras y la imprimira al reves"
rev
P5.4.sh Crear un scripts que
muestre por pantalla las tablas de multiplicar del 1 al 10.
#!/bin/bash
clear
for ((i=1;i<=10;i++))
do
        for
((j=1;j<=10;j++))
        do      
                multi=`expr
$i \* $j`
                echo "$i*$j=$multi"
       
done
done
P6.1.sh Realizar un menú para
trabajar sobre un fichero con el siguiente formato: 
equipo1:equipo2:golesequipo1:golesequipo2
1. Pedir datos de equipos y goles y
añadir los datos en el fichero futbol.txt. Preguntar previamente el nº de
partidos que queremos generar. FUNCIONES. 
function op1 ()
{
        echo
"he entrado en la opcion 1"
        echo
"número de partidos que queremos generar"
         read num
         for ((i=1; i<=$num; i++))
         do
             
  echo “datos del partido $i”
          echo "dime el nombre del equipo
1"
                    
read equipo1
                    
echo "dime el nombre del equipo 2"
                    
read equipo2
                 echo “dime el nombre de goles equipo1”
                  read goles1
      echo “dime el nombre de goles equipo2”
      read goles2
     echo “equipo1:equipo2:goles1:goles2”
     echo “$equipo1:$equipo2:$goles1:$goles2
“>> ~/boletinXIII/futbol.txt
     
done
}
2.
Mostrar contenido del fichero (si existe) .FUNCIONES
function op2 ()
{
        echo "he entrado en
la opcion 2"
        echo "voy a mostrar
el fichero si existe"
        if test -f ~/boletinXIII/futbol.txt
        then
                echo "el
fichero existe"
                cat ~/
boletinXIII/futbol.txt
        else
                echo "el
fichero no existe"
        fi
}
3. Pedir nombre de equipo y si está,
devolver el nº de partidos jugados
function op3 ()
{
        echo "he entrado en la opcion
3"
        echo "voy a pedir el nombre del
equipo"
        read equipo
        if test
$equipo -eq ~/misscripts/boletinXIII/futbol.txt
        then
                numpartidos=`wc -l
~/misscripts/boletinXIII/futbol.txt`
                echo "el numero de
partidos jugados es $numpartidos"
        else
                echo "el equipo no ha
jugado ningun partido"
        fi
}
4. Mostrar el nº de partidos empatados indicando los equipos
y el resultado del empate: 
“Los equipos betis-sevilla han empatado a 2”
function op4 ()
{
        echo "he entrado en la opcion
4"
        if test $goles1 -eq $goles2
        then
                echo "los equipos $equipo1 y $equipo2  han empatado a $goles1"
        else
                echo "los equipos no han
empatado"
        fi
}
5. Realizar la clasificación si existe el fichero futbol.txt
y borrar futbol.txt. El fichero resultante se llama clasificacion.txt 
1. Partidos ganados +3
2. Partidos empatados +1 
3. Partidos perdidos nada
function op5 ()
{
        echo "he entrado en la opcion
5"
        if test -f
~/misscripts/boletinXIII/futbol.txt
        then
                echo "el fichero
existe"
                if test $goles1 -gt $goles2
                then
                       
echo "puntos por partido
+3"
                        echo "partidos
ganados +3" >> ~/misscripts/boletinXIII/$
                        rm
~/misscripts/boletinXIII/futbol.txt
               
else
                       
if  test $goles1 -eq $goles2
                       
then
                                echo "partidos empatados +1" >>
~/misscripts/bo$
                        else
                                echo
"partidos perdidos nada" >> ~/misscripts/b$
                                rm
~/misscripts/boletinXIII/futbol.txt
                        fi
                fi
        else
                mkdir
~/misscripts/boletinXIII/futbol.txt
        fi
}
6. Salir
futbol.txt 
sevilla:betis:3:0
madrid:barcelona:5:0
cadiz:jaen:2:1
barcelona:sevilla:0:4
jerez:cadiz:2:3
resultado.txt “ORDENADO EN CASO DE EMPATE DE PUNTOS ALFABETICAMENTE”
cadiz-6p
sevilla-6p
madrid-3p
barcelona-0p
betis-0p
jaen-0p
jerez-0p
6. Añadir equipos al fichero y generar aleatoriamente los
resultados de los goles de los dos equipos, con valores del 0 al 5.
function op5 ()
{
        echo "he entrado en la opcion
5"
        if test -f
~/misscripts/boletinXIII/futbol.txt
        then
                echo "el fichero
existe"
                if test
$goles1 -gt $goles2
                then
                        echo "puntos por partido
+3"
                        echo "partidos ganados +3"
>> ~/misscripts/boletinXIII/$
                        rm
~/misscripts/boletinXIII/futbol.txt
                else
                        if  test $goles1 -eq $goles2
                        then
                                echo "partidos empatados +1" >>
~/misscripts/bo$
                        else
                                echo
"partidos perdidos nada" >> ~/misscripts/b$
                                rm
~/misscripts/boletinXIII/futbol.txt
                        fi
                fi
        else
                mkdir
~/misscripts/boletinXIII/futbol.txt
        fi
}
opc=0
while test $opc != 7
do
        echo "introduce una
opcion"
        echo "1 -pedir
datos de equipo y goles"
        echo "2 -mostrar el
contenido del fichero si existe"
        echo "3 -Pedir
nombre de equipo y si está, devolver el nº de partidos jugados"
      echo "4 -Mostrar el nº de partidos empatados
indicando los equipos y el resultado   
del empate"
        echo "5 -realizar
la clasificacion"
        echo "6 -añadir
equipos al fichero y generar aleatoriamente los resultados de los goles de los
dos equipos, con valores del o al 5"
        echo "7 -salir del
menu”
        read opc
        case $opc in
                1)      op1;;
                2)      op2;;
                3)      op3;;
                4)      op4;;
                5)      op5;;
                6)      op6;;
                7)      exit;;
        esac
done
P6.2.sh Escriba un script que
admita palabras (seguidas de enter) por parte del usuario hasta que este teclee
”salir”. Después debe aparecer en pantalla el número de palabras que se han
introducido y una despedida. 
#/bin/bash
clear
contador=0
echo "escriba palabras seguidas de enter hasta escribir
salir"
echo "puedes introducir datos o salir"
echo "para salir debes escribir salir"
echo "que quieres hacer"
read opcion
while test $opcion != salir
do
                echo "dime
una palabra"
                read palabra
                echo
"quieres seguir metiendo datos, sino escribir salir"
                read opcion
                contador=`expr
$contador + 1`
done
echo "el número de palabras introducidas es $contador"
echo "gracias! adios!"
P6.3.sh Modifique el programa
anterior de forma que las palabras se vayan guardando en un fichero
”palabras.txt”.
#/bin/bash
clear
contador=0
echo "escriba palabras seguidas de enter hasta escribir
salir"
echo "puedes introducir datos o salir"
echo "para salir debes escribir salir"
echo "que quieres hacer"
read opcion
while test $opcion != salir
do
        echo "dime una
palabra"
        read palabra
        echo "quieres
seguir metiendo datos, sino escribir salir"
        read opcion
                echo $palabra
>> ~/misscripts/boletinXIV/palabras.txt
        contador=`expr $contador
+ 1`
done
echo "el numero de palabras introducidas es $contador"
echo "gracias, adios!"
P6.4.sh Modifique de nuevo el
programa. Consiga que si el usuario introduce un número en lugar de una
palabra, se le devuelva la palabra que introdujo en esa posición. Por ejemplo
si 
introduce ”5 ” se le devolvera
la palabra número cinco del fichero ”palabras.txt”. 
#/bin/bash
clear
contador=0
echo "escriba palabras seguidas de enter hasta escribir
salir"
echo "puedes introducir datos o salir"
echo "para salir debes escribir salir"
echo "que quieres hacer"
read opcion
while test $opcion != salir
do
        echo "dime una
palabra"
        read palabra
        echo $palabra >>
~/misscripts/boletinXIV/palabras.txt
        echo "quieres
seguir metiendo datos, sino escribir salir"
        read opcion
       
if test $palabra =[0-9] 
        then
                numerito=`wc -l ~/misscripts/boletinXIV/palabras.txt
| cut -c1`
                for ((i=1;i<=$numerito; i++))
                do
                       
resultado=`sed -n "$i"p ~/misscripts/boletinXIV/palabra$
                        echo
"$resultado"
                done
        else
                echo "no
hay palabra"
        fi
        echo $palabra >>
~/misscripts/boletinXIV/palabras.txt
        contador=`expr $contador
+ 1`
done
echo "el numero de palabras introducidas es $contador"
echo "gracias, adios!"
P6.5.sh Escriba un programa que
calcule el resultado de sumar todos los números del 1 al 100 secuencialmente,
es decir: 1 + 2 + 3 + 4 + 5... 
#/bin/bash
clear
suma=0
for
((i=1;i<=100;i++))
do
                echo
"$suma"
                suma=`expr $suma
+ $i`
done
                echo "la
suma es $suma"
P6.6.sh Solicite dos números
por teclados. Comprueba que el primero es menor que el segundo, y si es así
calcula la suma de todos los números comprendidos entre ellos dos y la media de
ellos. 
Si el primero es mayor que el
segundo debe mostrar un mensaje diciendo que debes introducir un número menor
que el segundo.
#/bin/bash
clear
echo "dame un numero"
read numero1
echo "dame otro numero"
read numero2
if test $numero1 -lt
$numero2
then
                suma=0
                contador=0
                for ((i=$numero1;i<=$numero2;i++))
                do
                               suma=`expr
$suma + $i`
                               contador=`expr
$contador + 1` 
                done
                echo "la
suma de $numero1 hasta $numero2 es: $suma"
                 media=`expr $suma /
$contador`
                echo "la
media de los numeros es:$media"
else
                echo "la
operacion no se puede realizar"
fi 
P6.7.sh Modifica el script
anterior para que si el primer valor es mayor que el segundo, siga pidiendo
valores hasta que el primero sea menor que el segundo.
#/bin/bash
clear
echo "dame un primer número"
read numero1
echo "dame un segundo número"
read numero2
if test $numero1 -lt $numero2
then
        suma=0
        contador=0
        for ((i=$numero1;i<=$numero2;i++))
        do
                suma=`expr $suma + $i`
                contador=`expr
$contador + 1` 
        done
        echo "la suma de
$numero1 hasta $numero2 es: $suma"
        media=`expr $suma /
$contador`
        echo "la media de
los numeros es:$media"
else
        echo "dame otro
primer numero"
                read num1
                while test $num1 -gt $numero2
                do
                               echo
"dame otro primer numero"
                            
read num1
                done
        suma=0
        contador=0
        for ((i=$num1;i<=$numero2;i++))
        do
                suma=`expr $suma
+ $i`
                contador=`expr
$contador + 1` 
        done
        echo "la suma de
$numero1 hasta $numero2 es: $suma"
        media=`expr $suma /
$contador`
        echo "la media de
los numeros es:$media"
fi
P6.8.Ssh Haz que el ordenador
“piensa” en un número al azar entre 1 y 50. El usuario ha de adivinarlo en 5
oportunidades. El ordenador señalará si es mayor o menor. 
#/bin/bash
clear
echo "el ordenador va a pensar en un numero del 1 al 50"
numero=`echo $((1 + RANDOM %49))` 
echo "tienes 5 oportunidades para adivinarlo"
opcion=0
for
((i=1;i<=5;i++))
do
                echo "dime
el $i"
                read num1
                if test $num1 -eq $numero
                then
                               echo "has
acertado"
                               exit
                else
                               if test $num1 -gt
$numero
                               then
                                               echo
"$num1 es mayor que el numero que he pensado"
                               else
                                               echo
"$num1 es menor que el numero que he pensado"
                               fi
                fi
done
P6.9.sh El ordenador genera 3
números aleatorios entre el 100 y 200. Muéstralos, súmalos, realiza su
producto, su media.
#/bin/bash
clear
valor1=201
while test $valor1
-gt 200
do
                valor1=`echo
$((100 + $RANDOM %200))`
done
valor2=201
while test $valor2
-gt 200
do
        valor2=`echo $((100 + $RANDOM %200))`
done
valor3=201
while test $valor3
-gt 200
do
        valor3=`echo $((100 +
$RANDOM %200))`
done
echo "el primer numero es: $valor1"
echo "el primer numero es: $valor2"
echo "el primer numero es: $valor3"
suma=`expr $valor1 + $valor2 + $valor3`
media=`expr $suma / 3`
producto=`expr $valor1 \* $valor2 \* $valor3`
echo "la suma es: $suma"
echo "la media es: $media"
echo "el producto es: $producto" 
9. Realizar un programa que imprima por pantalla tántos asteriscos
como diga el usuario. Al 
ejecutarse debe preguntar “Cuantos asteriscos desea imprimir?” leer el
número que introduce el usuario e imprimir los asteriscos. 
#/bin/bash
clear
echo "cuantos asteriscos quieres imprimir"
read num
for ((i=1;
i<=$num; i++))
do
                echo
"*"
done
P6.11.sh Realizar un programa
que pida la base y el exponente y calcule la potencia. 
POTENCIA: 
Base=5
 5^3= 5 * 5 * 5 =125 
Exponente=3
#/bin/bash
clear
echo "dime que base quieres"
read base
echo "dime que exponente quieres"
read exponente
echo "vamos a calcular la potencia"
contador=$exponente
num=1
while test $contador -gt 0
do
                num=`expr $base
\* $num`
                contador=`expr
$contador - 1` 
done
                echo "la
potencia es: $num"
P7.1.sh Muestra
un menú de opciones:
1. Crea una carpeta
dentro de tu home llamada COMPRAS. Si la carpeta existe debe mostrar mensaje.
2. Comprobar que
existe COMPRAS. Pedir artículos para introducir en la lista de la compra,
mediante funciones.
El fichero tendrá el siguiente aspecto:
Articulo:categoria:cantidad: precio //No incluir
cabecera
leche:alimentacion:15:10,30
pan:3:1,15
mantequilla:lácteos:1:2,5
galletas:alimentación:2:3,45
cocacola:bebidas:12:3,80
zumos:bebidas:6:9,12
yogures:lácteos:4:5,23
champú:perfumería:1:1,80
Las categorías pueden ser: Alimentación, perfumería,
bebidas, lácteos.
El fichero se creará dentro de
~/COMPRAS/nosvamosdecompra.txt
3. Crea una carpeta
dentro de COMPRAS llamado BACKUP.
4. Crea una copia
de nosvamosdecompra.txt en una subcarpeta dentro de COMPRAR. El nombre de dicha
carpeta se solicita por teclado. El nombre del fichero será compra-c.txt.
5. Idem, crea un
enlace simbólico de nosvamosdecompra.txt dentro de BACKUP llamado compra-s.txt.
6. Idem, crea un
enlace duro de nosvamosdecompra.txt dentro de BACKUP llamado compra-d.txt.
7. Muestra el
contenido de la subcarpeta con sus inodos correspondientes
8. Crea un fichero
vacío dentro de la subcarpeta
9. Muestra aquellos
ficheros de la subcarpeta que tienen un tamaño > 0
10. Muestra
aquellos enlaces simbólicos que existen dentro de la subcarpeta
11. Muestra el
contenido de nosvamosdecompra.txt, compra-d.txt, compra-s.txt y compra-c.txt
12. Crea un fichero
todos.txt con el contenido de nosvamosdecompra.txt, compra-d.txt, compra-s.txt
y compra-c.txt
13. Crea un fichero
barato.txt con aquellos artículos con precio menor de 2 euros.
14. Crea un fichero
alimentación.txt en el que extraiga aquellos artículos de esta categoría.
15. Cuenta el nº de
productos que se van a comprar.
16. Solicitar
añadir artículos al fichero, aplica la función de la opción 2.
17. Borra aquellos
artículos que sean de perfumería y crea sinperfumeria.txt.
18. Solicita un
artículo y bórralo de la lista del fichero nosvamosdecompra.txt.
19. Suma el coste
total de la lista de la compra y muéstralo mediante un mensaje.
20. Calcula el
precio medio de los artículos y muéstralo mediante un mensaje.
21. Salir.
#bin/bash
clear
function op1crear_carpeta ()
{
            if test -d 
~/COMPRAS
            then
                        echo "la carpeta
existe"
            else
                        echo "la carpeta no
existe hay que crearlo"
                        mkdir ~/COMPRAS
            fi
}
function
op2pedir_articulos ()
{
            if test -d ~/COMPRAS
            then
                        echo "la carpeta
existe"
                        if test
-f ~/COMPRAS/nosvamosdecompra.txt
                        then
                                   echo "el
fichero existe"
                                   echo
"quieres introducir datos, sino escribe salir"
                                   read  datos
                                   while test $datos != "salir"
                                   do
                                               echo
"dame un articulo"
                                               read
articulo
                                              echo
"dime una categoria, entre alimentacion, perfumeria, lacteos o
bebidas"
                                               read
categoria
                                             while test $categoria
!= "alimentacion"
&& test $categoria != "perfumeria" && test $categoria
!= "lacteos" &&  test
$categoria != "bebidas"
                                               do
                                                           echo
"es incorrecto, tienes que poner una de las siguientes categorias,
alimentacion,perfumeria, lacteos o bebidas"
                                                           read
categoria
                                               done
                                               echo
"dame una cantidad"
                                               read
cantidad
                                               echo
"dame un precio"
                                               read
precio
                                               echo
$articulo:$categoria:$cantidad:$precio >> 
~/COMPRAS/nosvamosdecompra.txt
                                               echo
"si quieres salir, escribe salir, sino cualquier palabra y sigue
introduciendo datos"
                                               read
datos
                                   done
                        else
                                   echo "el
fichero no existe, crearlo"
                                   echo
$articulo:$categoria:$cantidad:$precio >> ~/COMPRAS/nosvamosdecompra.txt
                        fi
            else
                        echo "el archivo no
existe, pasar por la opcion 1"
            fi
}
function
op3crear_otra_carpeta ()
{
            if test -d ~/COMPRAS
            then
                        if test -d ~/COMPRAS/BACKUP
                        then
                                   echo "la
carpeta existe"
                        else
                                   echo "la
carpeta no existe hay que crearla"
                                   mkdir
~/COMPRAS/BACKUP
                        fi
            else
                        echo "la carpeta no
existe, pasar por la opcion 1"
            fi
}
function op4crear_copia ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        echo
"el fichero existe"
                        echo "dime el
nombre de otra carpeta"
                        read carpeta
                        mkdir ~/COMPRAS/$carpeta
                        cp
~/COMPRAS/nosvamosdecompra.txt ~/COMPRAS/$carpeta/compra-c.txt
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op5crear_enlace_simb ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        if test -d ~/COMPRAS/BACKUP
                        then
                                   echo "la
carpeta existe"
                                   ln -s
~/COMPRAS/nosvamosdecompra.txt ~/COMPRAS/BACKUP/compra-s.txt
                        else
                                   echo "la
carpeta no existe, pasar por la opcion 3"
                        fi
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op6crear_enlace_duro ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        if test -d ~/COMPRAS/BACKUP
                        then
                                   echo "la carpeta existe"
                                   ln
~/COMPRAS/nosvamosdecompra.txt ~/COMPRAS/BACKUP/compra-d.txt
                        else
                                   echo "la
carpeta no existe, pasar por la opcion 3"
                        fi
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op7mostrar_contenido ()
{
            if test -d ~/COMPRAS/BACKUP
            then
                        echo "los ficheros
que hay son los siguientes"
                        ls -i ~/COMPRAS/BACKUP
            else
                        echo "la carpeta no
existe, pasar por la opcion 3"
            fi
}
function
op8crear_fichero_vacio ()
{
            if test -d ~/COMPRAS/BACKUP
            then
                        echo
"vamos a crear un fichero vacio y se guarda en BACKUP"
                        touch
~/COMPRAS/BACKUP/ficherovacio.txt
            else
                        echo
"la carpeta no existe, pasar por la opcion 3"
            fi
}
function op9mostrar_fichero
()
{
            if test -d ~/COMPRAS/BACKUP
            then
                        echo "los ficheros
mayores que 0 son los siguientes"
                        find ~/COMPRAS/BACKUP
-size +0
            else
                        echo "la carpeta no
existe, pasar por la opcion 3"
            fi
}
function op10mostrar_enlaces
()
{
            if test -d ~/COMPRAS/BACKUP
            then
                        echo "vamos a
mostrar los enlaces simbolicos dentro de la carpeta BACKUP"
                        ls -l
~/COMPRAS/BACKUP > ~/COMPRAS/BACKUP/sim.txt
                        lineas=`wc -l ~/COMPRAS/BACKUP/sim.txt | cut
-d" " -f1`
                        for ((i=2;i<=$lineas;i++))
                        do
                                   corta=`sed -n "$i"p
~/COMPRAS/BACKUP/sim.txt |cut -c1`
                                   if test $corta = "l"
                                   then
                                               sed -n "$i"p
~/COMPRAS/BACKUP/sim.txt >> ~/COMPRAS/BACKUP/simfin.txt
                                   else
                                               echo
"no existe ningun enlace simbolico"
                                   fi
                        done
                        rm ~/COMPRAS/BACKUP/sim.txt
                        cat ~/COMPRAS/BACKUP/simfin.txt
                        rm ~/COMPRAS/BACKUP/simfin.txt
            else
                        echo "la carpeta no
existe, pasar por la opcion 3"
            fi
}
function
op11mostrar_contenido_archivos ()
{
#no
me muestra los ficheros que si que existen y estan con contenido,aun habiendo
comprobado que existen
            if test
-f ~/COMPRAS/nosvamosdecompra.txt
            then
                        echo "la carpeta
existe"
                        cat
~/COMPRAS/nosvamosdecompra.txt
            else
                        echo "la carpeta no
existe, pasar por la opcion 3"
            fi
            echo ""
            if test -f
~/COMPRAS/$carpeta/compras-c.txt
            then
                        echo "la carpeta
existe"
                        cat
~/COMPRAS/$carpeta/compras-c.txt
            else
                        echo "la carpeta no
existe, pasar por la opcion 4"
            fi
            echo ""
            if test -f ~/COMPRAS/BACKUP/compras-d.txt
            then
                        echo "la carpeta
existe"
                        cat
~/COMPRAS/BACKUP/compras-d.txt
            else
                        echo
"la carpeta no exite, pasar por la opcion 5"
            fi
            echo ""
            if test -f ~/COMPRAS/BACKUP/compras-s.txt
            then
                        echo "la carpeta
existe"
                        cat
~/COMPRAS/BACKUP/compras-s.txt
            else
                        echo
"la carpeta no existe, pasar por la opcion 6"
            fi
}
function
op12crear_ficheros ()
{
#
me crea el fichero todos, aunque me dice que los otros ficheros no existen
aunque estan todos comprobados
            if test
-f ~/COMPRAS/nosvamosdecompra.txt
        then
                echo "la carpeta
existe"
                cat
~/COMPRAS/nosvamosdecompra.txt >> ~/COMPRAS/todos.txt
        else
                echo "la carpeta no
existe, pasar por la opcion 3"
       
fi
            echo ""
        if test -f
~/COMPRAS/$carpeta/compras-c.txt
        then
                echo "la carpeta
existe"
                cat
~/COMPRAS/$carpeta/compras-c.txt >> ~/COMPRAS/todos.txt
        else
                echo "la carpeta no existe,
pasar por la opcion 4"
        fi
            echo ""
        if test -f
~/COMPRAS/BACKUP/compras-d.txt
        then
                echo "la carpeta
existe"
                cat
~/COMPRAS/BACKUP/compras-d.txt >> ~/COMPRAS/todos.txt
        else
                echo "la carpeta no exite,
pasar por la opcion 5"
        fi
            echo ""
        if test -f
~/COMPRAS/BACKUP/compras-s.txt
        then
                echo "la carpeta
existe"
                cat
~/COMPRAS/BACKUP/compras-s.txt >> ~/COMPRAS/todos.txt
        else
                echo "la carpeta no
existe, pasar por la opcion 6"
        fi
}
function
op13crea_ficheros_art ()
{
#me
da un error que no consigo ver cual es, y no se si hace lo que se pide
            if test
-f ~/COMPRAS/nosvamosdecompra.txt
            then
            num=`wc
-l ~/COMPRAS/nosvamosdecompra.txt | cut -c1`
                        for ((i=1;i<=$num;i++))
                        do
                                   precio=`sed -n "$i"p
~/COMPRAS/nosvamosdecompra.txt | cut -d: -f4` 
                                   if test $precio -le 2
                                   then
                                               sed
-n "$i"p ~/COMPRAS/nosvamosdecompra.txt >> ~/COMPRAS/barato.txt
                                    else
                                               echo
"no hay ningun producto inferior a 2 euros"
                                   fi
                done
            else
                echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op14crea_ficheros_extr
{
#me
da un error que no consigo ver cual es, y no se si hace lo que se pide
            if test
-f ~/COMPRAS/nosvamosdecompra.txt
        then
                num=`wc -l
~/COMPRAS/nosvamosdecompra.txt | cut -c1`
                for ((i=1;i<=$num;i++))
                do
                        categoria=`sed -n
"$i"p ~/COMPRAS/nosvamosdecompra.txt | cut -d: -f2` 
                        if test $categoria =
"alimentacion"
                        then
                                sed -n
"$i"p ~/COMPRAS/nosvamosdecompra.txt >>
~/COMPRAS/alimentacion.txt
                        else
                                echo "no
hay ningun producto que tenga la categoria de alimentacion"
                        fi
                done
        else
                echo "el fichero no
existe, pasar por la opcion 2"
        fi
}
function
op15cuenta_productos ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        numero=`wc
-l ~/COMPRAS/nosvamosdecompra.txt | cut -c1`
                        echo "el numero de
productos que vamos a comprar es $numero"
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op16añadir_articulos ()
{
            op2pedir_articulos
}
function
op17borrar_articulos ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        sed
-e '/perfumeria/d' ~/COMPRAS/nosvamosdecompra.txt>
~/COMPRAS/sinperfumeria.txt
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op18solicitar_articulo ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
            then
                        echo "introduce un
articulo"
                        read articulo
                        sed -e
'/"$articulo"/d' ~/COMPRAS/nosvamosdecompra.txt > ~/COMPRAS/nuevo.txt
                        cat ~/COMPRAS/nuevo.txt
> ~/COMPRAS/nosvamosdecompra.txt
                        rm ~/COMPRAS/nuevo.txt
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function
op19suma_coste ()
{
#
me da error y no se si me funciona
            if test
-f ~/COMPRAS/nosvamosdecompra.txt
            then
                        num=`wc -l ~/COMPRAS/nosvamosdecompra.txt |
cut -c1`
                for ((i=1;i<=$num;i++))
                do
                        cantidad=`sed -n
"$i"p ~/COMPRAS/nosvamosdecompra.txt | cut -d: -f3`
                        precio=`sed -n
"$i"p ~/COMPRAS/nosvamosdecompra.txt | cut -d: -f4`
                                   coste=`expr $cantidad \* $precio`
#me
da un argumento no entero, no se como hacer que sume las cantidades de todos
los productos, porque si es con uno solo si funciona
                                   suma=`expr $i
+ $coste`
               
done
                        echo "el coste es
$suma"
            else
                        echo "el fichero no
existe, pasar por la opcion 2"
            fi
}
function op20precio_medio ()
{
            if test -f ~/COMPRAS/nosvamosdecompra.txt
        then
                num=`wc -l ~/COMPRAS/nosvamosdecompra.txt | cut -c1`
                for
((i=1;i<=$num;i++))
                do
                                   cantidad=`sed -n "$i"p
~/COMPRAS/nosvamosdecompra.txt | cut -d: -f3`
                        precio=`sed -n
"$i"p ~/COMPRAS/nosvamosdecompra.txt | cut -d: -f4`
                        media=`expr
$precio / $cantidad`
                done
                echo "el precio medio es
$media"
        else
                echo "el fichero no
existe, pasar por la opcion 2"
        fi
}
opcion=0
while test $opcion != 21
do
            echo "****************************************************************"
            echo "opcion 1:crear
carpeta"
            echo "opcion 2:pedir
articulos"
            echo "opcion 3:crear carpeta
dentro de COMPRAS"
            echo "opcion 4:crear
copia"
            echo "opcion 5:crear enlace
simbolico"
            echo "opcion 6:crear enlace
duro"
            echo "opcion 7:muestra el
contenido de las subcarpetas con sus inodos"
            echo "opcion 8:crea un fichero
vacio en la subcarpeta"
            echo "opcion 9:mostrar ficheros
con tamaño mayor a 0"
            echo "opcion 10:muestra enlaces
simbolicos"
            echo "opcion 11:muestra el
contenido de los archivos"
            echo "opcion 12:crea un
fichero"
            echo "opcion 13:crea fichero
con articulos con precio menor que 2"
            echo "opcion 14:crea fichero
que extraiga productos de una categoria"
            echo "opcion 15:cuenta el
numero de productos que vas a comprar"
            echo "opcion 16:añadir
articulos al fichero"
            echo "opcion 17:borra
determinandos articulos"
            echo "opcion 18:solicita un
articulo y borralo"
            echo "opcion 19:suma el coste
total de la lista de compra"
            echo "opcion 20:calcula el
precio medio de los articulos"
            echo "opcion 21:salir"
            echo
"****************************************************************"
            read opcion
            case $opcion in
                        1)
        op1crear_carpeta;;
                        2)         op2pedir_articulos;;
                        3)         op3crear_otra_carpeta;;
                        4)         op4crear_copia;;
                        5)         op5crear_enlace_simb;;
                        6)         op6crear_enlace_duro;;
                        7)         op7mostrar_contenido;;
                        8)         op8crear_fichero_vacio;;
                        9)         op9mostrar_fichero;;
                        10)       op10mostrar_enlaces;;
                        11)       op11mostrar_contenido_archivos;;
                        12)       op12crear_ficheros;;
                        13)       op13crea_ficheros_art;;
                        14)       op14crea_ficheros_extr;;
                        15)       op15cuenta_productos;;
                        16)       op16añadir_articulos;;
                        17)       op17borrar_articulos;;
                        18)       op18solicitar_articulo;;
                        19)       op19suma_coste;;
                        20)       op20precio_medio;;
                        21)       exit;;
                        *)         echo "la opcion no es correcta"
            esac
done
 
No hay comentarios:
Publicar un comentario