Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Unix >> .

Scrivi un programma di shell in Unix per trovare il palindromo del numero?

Esistono diversi approcci per trovare il palindromo di un numero in uno script di shell unix. Ecco due versioni:una che utilizza solo comandi con shell integrati (più portatili ma potenzialmente meno efficienti per numeri molto grandi) e un altro usando `awk` (più efficiente per numeri più grandi).

versione 1:utilizzando solo Shell Built-in (bash)

Questa versione è più portatile in quanto si basa solo su funzionalità comuni alla maggior parte delle conchiglie compatibili con Bourne. Tuttavia, è meno efficiente per numeri molto grandi a causa della manipolazione delle stringhe.

`` `Bash

#!/bin/bash

Leggi -p "Immettere un numero:" Num

invertire il numero usando la manipolazione della stringa

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

Confronta i numeri originali e invertiti

if ["$ num" =="$ inversed_num"]; Poi

Echo "$ num è un palindromo."

altro

Echo "$ num non è un palindromo."

fi

`` `

versione 2:usando AWK (più efficiente)

Questa versione utilizza `Awk`, che è generalmente più efficiente per le manipolazioni numeriche, specialmente con numeri più grandi.

`` `Bash

#!/bin/bash

Leggi -p "Immettere un numero:" Num

Usa AWK per invertire il numero e verificare il palindrome

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

inversed_num ="";

temp_num =num;

while (temp_num> 0) {

inversed_num =reversed_num (temp_num % 10);

temp_num =int (temp_num / 10);

}

if (num ==inversed_num) {

Stampa Num "è un palindromo."

} altro {

Stampa Num "non è un palindromo."

}

} '

`` `

Come usare uno script:

1. Salva il codice come file (ad es. `Palindrome.sh`).

2. Rendilo eseguibile:`chmod +x palindrome.sh`.

3. Esegui:`./Palindrome.sh`.

4. Immettere un numero quando richiesto.

Spiegazione della versione 2 (awk):

* `-v num =" $ num "`:passa il numero di input dalla variabile shell `num` allo script` Awk`.

* `Begin`:questo blocco esegue prima di elaborare qualsiasi riga di input.

* `inversed_num =" ";`:inizializza una stringa vuota per memorizzare il numero invertito.

* `temp_num =num;`:crea una copia temporanea del numero per evitare di modificare l'originale.

* `while (temp_num> 0)`:loop fino a quando il numero temporaneo diventa 0.

* `inversed_num =reversed_num (temp_num % 10);`:estrae l'ultima cifra usando l'operatore modulo (` %`) e lo aggiunge a `inversed_num`.

* `temp_num =int (temp_num / 10);`:rimuove l'ultima cifra per divisione intera (` /`).

* L'istruzione Final `if` confronta i numeri originali e invertiti e stampa il messaggio appropriato.

La versione `Awk` è generalmente raccomandata per la sua efficienza, specialmente quando si tratta di numeri più grandi. Scegli la versione che si adatta meglio alle tue esigenze e all'ambiente di shell. Ricorda di gestire potenziali errori (come input non numerici) per uno script più robusto in un ambiente di produzione.

 

sistemi © www.354353.com