Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 30

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
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

Este programa hecho en sh / bash lee 10 números y cuenta cuantos


números positivos, negativos y neutros hay.

#!/bin/bash
X=1 #inicia la variable X
v=0 #inicia la variable v
v1=0 #inicia la variable v1
v2=0 #inicia la variable v2
while [ $X -le 10 ] #inicia X , -le operador aritmético y lee hasta 10
números
do
echo "Ingresa un numero"
read b # leer b
if (($b<=-1)) #if si b es menor que -1
then #entonces
let v+=1 # let permite realizar la operación de sumar, cuando exista
un numero menor o igual que -1 entonces v se le asigna +1 cuantas
veces sea necesario
fi
if(($b>=+1))
then
let v1+=1 # let permite realizar la operación de sumar, cuando exista
un numero menor o igual que +1 entonces v1 se le asigna +1 cuantas
veces sea necesario
fi
if(($b==0))
then
let v2+=1
let v1+=1 # let permite realizar la operación de sumar, cuando exista
un numero 0 entonces v1 se le asigna +1 cuantas veces sea necesario
fi
let X=$X+1 # let suma X hasta llegar 10 para controlar el ciclo while
done
echo "Positivos hay $v negativos hay $v1 y neutros $v2" #Muestra el
resultado

Programa que imprime 5 números


#!/bin/sh
for i in $(seq 1 5); do
echo $i
done

Tabla de multiplicación
#!/bin/sh
echo Digite un numero
read num
for i in $(seq 1 12); do
echo $num x Si = $(($num*$i))
done

Dos formas diferentes de for


#!/bin/sh
echo Ingrese un nombre
read nom
for i in $(seq 1 8); do
echo $i=$nom
done
#!/bin/sh
for i in $(seq 1 10); do
echo Soy ingeniero
done

Hacer un programa con el while

#!/bin/sh a seq 1 5
i=1
while [ $i -lt 6 ]; do
echo $i
i=$(($i+1))
done
Programa que diga si un número es positivo o negativo
#!/bin/sh
echo Ingrese un numero
read i
if [ $i -gt -1 ]; then
echo $i es positivo
else
echo $i es negativo
fi

Programa que diga si un número es mayor de 100


#!/bin/sh
echo Ingrese un numero
read i
if [ $i -ge 100 ]; then
echo $i es mayor que 100
else
echo $i es menor que 100
fi

Programa que diga si un número es divisible entre 101


#!/bin/sh
echo Ingrese un numero
read i
if [ $(($i%101)) -eq 0 ]; then
echo $i es disible entre 101
else
echo $i es no disible entre 101
fi

Programa que diga si un número es par o impar


#!/bin/sh
echo Ingrese un numero
read i
if [ $(($i%2)) -eq 0 ]; then
echo $i es par
else
echo $i es impar
fi
Programa que la cantidad de n número y que diga cuales son
pares e impares
#!/bin/sh
echo Ingrese un numero
read num
for i in $(seq 1 $num); do
echo número
read nume
if [ $(($nume%2)) -eq 0 ]; then
echo el número es par
else
echo el número es impar
fi
done

Programa que imprime una frase al revés


#!/bin/bash
echo “Introduce una frase”
read frase
esarf=””
for ((i=$((${#frase}-1));i>=0;i--)) {
esarf=${esarf}${frase:$i;1}
}
echo “’${frase}’ al revés es ‘${esarf}’”

También podría gustarte