José Francisco Casales Huerta
Edinson Padrón
Daniel Alejandro Paredes Martínez
Irving Juárez
Yohanna Patricia Rodríguez Ortega
Junior Cupe Casquina
Marco Antonio Toscano Freire
ProfesorFredy Mendoza Vargas
KEVIN FIGUEROA
Bryan Castano
Jose Antonio Silva Toro
Camilo Gongora
Elías Doldan
Bryan Castano
Martín Steven Hernández Ortiz
Valente IA
fpolanco
Jeffersson Muñoz Torres
Edinson Padrón
Enzo Venturi
Aaron Joel Limachi Quispe
Erick Armando Sánchez Flores
Ricardo Daniel Quiroga
Enzo Venturi
Irving Juárez
Juan Cruz Fernández
Ulises Vázquez Espinoza
Sara María Mejia Sánchez
Jose Luis Rosado Cardenas
Diego Mendoza
Jose Miguel Diaz
Cristian Damian Marazzita
Ivan -
David Rosas
David Rosas
Felipe Santiago Gonzalez
Joaquin Cartes
Fernando Alejandro Yerena Ramos
Juan David Guzmán López
Jose Suarez
Agregue algunos saltos de linea para dar un poco de formato.
Te sugiero compartir el script como texto para que otros lo podamos ejecutar en nuestras máquinas.
Muchas gracias por el aporte.
Wow!, excelente.
Si quieren hacerlo mas interactivo pueden usar el comando read para leer los inputs desde la consola, como en el siguiente ejemplo
#!/bin/sh echo "Please give a random number" read num1 echo "Please give me another one" read num2 echo "The sum is $((num1+num2))"
Gracias por tu aporte :)
#!/usr/bin/env bash # lec_3.sh file # ! /bin/bash // it is used in the course # Author: name - @name #operators A=10 B=4 echo "BASIC ARITHMETIC OPERATORS" echo -e "inputs: A=$A , B=$B\n" echo "Addition operator: A+B=" $((A+B)) echo "Subtraction operator: A-B=" $((A-B)) echo "Multiplication operator: A*B=" $((A*B)) echo "Division operator: A/B=" $((A/B)) echo "Module operator: A%B=" $((A%B)) echo -e "\n------------------------------------------" # use -e to support especial characters x=10 y=4 echo -e "\n" echo -e "BASIC RELATIONAL OPERATORS" echo -e "inputs: x=$x , y=$y\n" echo "x > y , x is greater than y :" $((x > y)) echo "x ≥ y , x is greater (than) or equal to y :" $(( x>= y)) echo "x < y , x is smaller than y :" $((x < y)) echo "x ≤ y , x is smaller (than) or equal to y :" $((x <= y)) echo "x > 0 , x is positive :" $((x > 0)) echo "x ≥ 0 , x is positive or zero; x is non-negative :" $((x >= y)) echo "x < 0 x is negative :" $((x < 0)) echo "x ≤ 0 x is negative or zero :" $((x <= y)) echo -e "\n------------------------------------------" echo -e "\nBASIC ASSIGNATION OPERATORS" echo -e "inputs: x=$x , y=$y\n" echo "x += y :" $((x +=y )) echo "x -= y :" $((x -=y )) echo "x *= y :" $((x *=y )) echo "x /= y :" $((x /=y )) echo "x %= y :" $((x %=y ))
Genial sigue asì 😉
Gracias por compartir (Y)
Recomiendo mejorar "el tema de" la muletilla.
EL TEMA , EL TEMA, EL TEMA, GOSHHHHH!
Es un profesor ecuatoriano y esa es la forma de hablar de la gente en la sierra de Ecuador. Platzi es una plataforma multicultural y muchas de las formas de hablar de algunos paises pueden causar ruido para otros...
Qué lata con "el tema" de la muletilla 🥴
xd me molesta un poco
Siii, que cosa tan repetitiva eso -"El Tema" .
Falto explicar un operador aritmetico al profesor, el de potenciación. Me hizo falta no verlo en los operadores y probando con el script descubrí que el operador de potenciación es:
8 ** 2 = 64
No fue tan dificil ya que es el mismo que el de Python
este tipo de clases en donde el procesor te va explicando y además vas practicando son geniales y hacen que aprendas mejor y no pierdas en el interes.
$((A+B)) no entendí la explicación pq no usar $(A+B)
La expresión "$variable" realiza que se imprima el contenido de la variable como si fuera un tipo de dato String aunque ,como en el caso del ejemplo del profesor, son enteros. . Ahora, los primeros paréntesis o paréntesis externos de la expresión "$((A+B))" indican el limite a que refiere la expresión, es decir su alcance de impresión. Lo que contiene lo paréntesis internos es un calculo o una operación que se realiza con su tipo de variable "nativo", es decir, como enteros. Es por ello, que las operaciones de relaciones y asignación no tienen inconvenientes en resolverse al igual que los aritméticos. . Mas si se usará la expresión "$(A+B)", en la consola nos saldría un error.
$() se utiliza para ejecutar un comando y obtener su salida.
files=$(ls) # Contenido del directorio de trabajo
$(()) se utiliza para evaluar expresiones numéricas en el dominio de los números enteros.
result=$(( 1 + 1 )) # 2
Por lo tanto, al intentar evaluar $( 1 + 1) daría un error porque no es un comando válido.
En vez de:
numA=10 numB=4
Intentar:
read numA numB <<<$(echo 10 4)
Hero
Para los que usan alguna distribución de linux les recomiendo usar la terminal de Tilix :) Permite tener varias terminales al mismo tiempo y está mas elegante ;)
Alacrity + zsh (oh my zsh plugin) + neovim
https://github.com/alacritty/alacritty https://ohmyz.sh/ https://neovim.io/
Con fritas.
Un Tiling Window Manager junto a cualquier terminal es mi recomendanción ;)
Los shortcuts que da el profe para los que usamos vim son oro puro
El script utilizando printf en lugar de echo. Es un poco más complejo printf, pero se supone que es más amigable con los scripts de bash, porque no tiene problemas de interoperatibilidad como echo, ya que no todos los os tienen la misma versión, por lo que echo -e podría funcionar en un servidor y no en otro.
#!/bin/bash #Programa para revisar los tipos de operadores # En printf %s indica string %i indica integer %% imprime % # \n es para indicar newline \t para indicar tabulación numA=10 numB=4 printf "Operadores aritméticos\n" printf "Números: A=%i y B=%i\n" $numA $numB printf "Sumar A + B =%i\n" $((numA + numB)) printf "Restar A - B =%i\n" $((numA - numB)) printf "Multiplicar A * B =%i\n" $((numA * numB)) printf "Dividir A / B =%i\n" $((numA / numB)) printf "Residuo A %% B =%i\n\n" $((numA % numB)) printf "Operadores relacionales\n" printf "Números: A=%i y B=%i\n" $numA $numB printf "A > B =%s\n" $((numA > numB)) printf "A < B =%s\n" $((numA < numB)) printf "A >= B =%s\n" $((numA >= numB)) printf "A <= B =%s\n" $((numA <= numB)) printf "A == B =%s\n" $((numA == numB)) printf "A != B =%s\n\n" $((numA != numB)) printf "Operadores de asignación\nConsiderar que A va cambiando por la asignación, por lo que A - B no es 6\n" printf "Números: A=%i y B=%i\n" $numA $numB printf "Sumar A += B =%s\n" $((numA += numB)) printf "Restar A -= B =%s\n" $((numA -= numB)) printf "Mulitiplicar A *= B =%s\n" $((numA *= numB)) printf "Dividir A /= B =%s\n" $((numA /= numB)) printf "Residuo A %%= B =%i\n\n" $((numA %= numB))
Muy interesante el dato gracias. Yo usaba indiscriminadamente **printf ** pero desconocía el dato sobre echo.
Hola
Les comparto el 3_tipoOperadores.sh realizado en clase.
# ! /bin/bash # Programa para revisar los tipos de operadores numA=10 numB=4 echo "Operadores Aritméticos" echo "Números: A=$numA y B=$numB" echo "Sumar A + B = " $((numA + numB)) echo "Restar A - B = " $((numA - numB)) echo "Multiplicar A * B = " $((numA * numB)) echo "Dividir A / B = " $((numA / numB)) echo "Residuo A % B = " $((numA % numB)) echo -e "\nOperadores Relacionales" echo "Números: A=$numA y B=$numB" echo "A > B = " $((numA > numB)) echo "A < B = " $((numA < numB)) echo "A >= B = " $((numA >= numB)) echo "A <= B = " $((numA <= numB)) echo "A == B = " $((numA == numB)) echo "A != B = " $((numA != numB)) echo -e "\nOperadores de Asignacion" echo "Números: A=$numA y B=$numB" echo "Sumar A += B = " $((numA += numB)) echo "Restar A -= B = " $((numA -= numB)) echo "Multiplicar A *= B = " $((numA *= numB)) echo "Dividir A /= B = " $((numA /= numB)) echo "Residuo A %= B = " $((numA %= numB))
Presione 4 veces Y y no copio 4 lineas solo dos, intente presionarlo mas veces y solo me copio una linea
La idea es presionar Tecla Esc + (Tecla número 4) + Tecla Y (2 veces) Moverse a la línea a pegar + Tecla Esc + Tecla P.
@_MendozaDiego, de hecho el segundo ESC no hace falta. Pero de resto estas en lo correcto.
La verdad el curso me parece muy malo, el contraste de video es muy feo, no se distingue claramente, una pena y gran perdida de tiempo
Tambien pueden obtener resultados de operaciones aritmeticas usando el comando expr
expr 5 + 10 echo $((5 + 10))
Ambos metodos retornan el mismo resultado.
Sobre los Operadores de Asignacion...
Para entender mejor ++lo que realmente sucede en la parte de Operadores de Asignacion++ podemos fijarnos que el valor de A ha sido modificado en cada operacion. Podemos visualizar esto agregando la linea de codigo:
echo "E A = $numA"
debajo de cada operacion. El codigo para esa parte quedaria asi:
echo -e "\nOperadores de asignacion" echo "Numeros: A=$numA y B=$numB" echo "Sumar A += B" $((numA += numB)) echo "NUEVO VALOR de A = $numA" echo "Restar A -= B" $((numA -= numB)) echo "NUEVO VALOR de A = $numA" echo "Multiplicar A *= B" $((numA *= numB)) echo "NUEVO VALOR de A = $numA" echo "Dividir A /= B" $((numA /= numB)) echo "NUEVO VALOR de A = $numA" echo "Residuo A %= B" $((numA %= numB)) echo "NUEVO VALOR de A = $numA"
Al comparar comparar estos resultados con los de Operadores Aritmeticos pareceran bastante similares y esto se da ya que estamos haciendo la operacion una operacion y seguido su operacion inversa, asi que en Operacores de asignacion el valor de A vuelve a como estaba y sobrevive hasta la operacion de asignacion con Residuo para dar el mismo resultado
Corrijo la linea de codigo que podemos agregar:
echo "NUEVO VALOR de A = $numA"
la resta con A-= B no debió dar 6?
SI, porque da 10?
Porque la anterior al "A -= B" hubo una suma cuyo resultado queda almacenado en A.
1.- A= 10, B=4 2.- Suma y asignación A+=B → A = A+B → A=10+4 → A=14 "A" ya no vale 10, vale 14 3.- Resta y asignación A-=B → A = A - B → A=14 - 4 → A=10 "A" ya no vale 14, ahora vale 10
En esencia, el resultado de la operación que realicemos queda almacenado en la variable del lado izquierdo del =.
🍍🍍🍍
#!/bin/bash
Operador de asignación
x=5 echo "x = $x"
Operador de suma
y=10 z=$((x + y)) echo "x + y = $z"
Operador de resta
z=$((x - y)) echo "x - y = $z"
Operador de multiplicación
z=$((x * y)) echo "x * y = $z"
Operador de división
z=$((x / y)) echo "x / y = $z"
Operador de módulo
z=$((x % y)) echo "x % y = $z"
Operador de exponenciación
z=$((x ** y)) echo "x ** y = $z"
Operador de negación
z=$((!x)) echo "!x = $z"
Operador de complemento
z=$((~x)) echo "~x = $z"
Operador de desplazamiento a la izquierda
z=$((x << y)) echo "x << y = $z"
Operador de desplazamiento a la derecha
z=$((x >> y)) echo "x >> y = $z"
Operador de AND
z=$((x & y)) echo "x & y = $z"
Operador de OR
z=$((x | y)) echo "x | y = $z"
Operador de XOR
z=$((x ^ y)) echo "x ^ y = $z"
Muy bien explicado el tema de los operadores. Despejando las dudas hasta ahora con el curso. Mi ejercicio queda asi: