“Conocimiento Sistemas>unix

¿Escribir un programa de shell en Unix para encontrar el Palindrome del número?

2015/4/18
Existen varios enfoques para encontrar el palíndromo de un número en un guión de shell Unix. Aquí hay dos versiones:una que usa solo comandos de shell incorporados (más portátiles pero potencialmente menos eficientes para números muy grandes) y otro usando 'AWK` (más eficiente para números más grandes).

Versión 1:Uso de solo Shell incorporados (bash)

Esta versión es más portátil, ya que se basa solo en las características comunes a la mayoría de los proyectiles compatibles con Bourne. Sin embargo, es menos eficiente para números muy grandes debido a la manipulación de la cadena.

`` `Bash

#!/bin/bash

Leer -P "Ingrese un número:" Num

Revertir el número usando String Manipulation

reversed_num =$ (echo "$ num" | rev)

Compare los números originales e invertidos

if ["$ num" =="$ reversed_num"]; entonces

echo "$ num es un palíndromo".

demás

Echo "$ num no es un palíndromo".

FI

`` `` ``

Versión 2:Uso de AWK (más eficiente)

Esta versión utiliza 'Awk`, que generalmente es más eficiente para manipulaciones numéricas, especialmente con números más grandes.

`` `Bash

#!/bin/bash

Leer -P "Ingrese un número:" Num

Use AWK para revertir el número y verificar el Palindrome

awk -v num ="$ num" 'begin {

reversed_num ="";

temp_num =num;

while (temp_num> 0) {

reversed_num =reversed_num (temp_num % 10);

temp_num =int (temp_num / 10);

}

if (num ==reversed_num) {

Impresión num "es un palíndromo".

} demás {

Impresión num "no es un palíndromo".

}

} '

`` `` ``

Cómo usar cualquier script:

1. Guarde el código como un archivo (por ejemplo, `palindrome.sh`).

2. Hazlo Ejecutable:`Chmod +x palindrome.sh`.

3. Corríelo:`./Palindrome.sh`.

4. Ingrese un número cuando se le solicite.

Explicación de la versión 2 (AWK):

* `-V num =" $ num "`:pasa el número de entrada de la variable shell `num` al script` awk`.

* `BEGIN`:Este bloque se ejecuta antes de procesar cualquier línea de entrada.

* `reversed_num =" ";`:Inicializa una cadena vacía para almacenar el número invertido.

* `temp_num =num;`:Crea una copia temporal del número para evitar modificar el original.

* `while (temp_num> 0)`:bucles hasta que el número temporal se convierta en 0.

* `reversed_num =reversed_num (temp_num % 10);`:extrae el último dígito usando el operador Modulo (` %`) y lo agrega a `reversed_num`.

* `temp_num =int (temp_num / 10);`:Elimina el último dígito por la división Integer (` /`).

* La declaración `if` final compara los números originales y revertidos e imprime el mensaje apropiado.

La versión 'AWK` generalmente se recomienda para su eficiencia, especialmente cuando se trata de números más grandes. Elija la versión que mejor se adapte a sus necesidades y un entorno de conchas. Recuerde manejar posibles errores (como la entrada no numérica) para un script más robusto en un entorno de producción.

unix
Unix Screen Tutorial Command
¿UNIX tiene una interfaz de línea de comandos?
¿Qué es la forma completa de SSDD?
¿Qué aplicación se escribe para proporcionar un shell GUI para Unix y Linux?
¿Qué significa uf en electrónica?
¿Cuál es un comando para mostrar todas las variables de entorno en Linux?
Cómo buscar y eliminar archivos no utilizados en Unix
¿Identificar las funciones básicas realizadas por una interfaz de usuario o shell?
Conocimiento de la computadora © http://www.ordenador.online