Existem várias abordagens para encontrar o palíndromo de um número em um script de shell Unix. Aqui estão duas versões:uma usando apenas comandos de shell embutidos (mais portáteis, mas potencialmente menos eficientes para números muito grandes) e outro usando `awk` (mais eficiente para números maiores).
Versão 1:Usando apenas shell embutido (bash) Esta versão é mais portátil, pois depende apenas de recursos comuns à maioria dos conchos compatíveis com Bourne. No entanto, é menos eficiente para números muito grandes devido à manipulação de cordas.
`` `BASH
#!/bin/bash
Leia -p "Digite um número:" num
inverter o número usando manipulação de string
reverted_num =$ (echo "$ num" | Rev)
Compare os números originais e revertidos
se ["$ num" =="$ reverted_num"]; então
eco "$ num é um palíndromo".
outro
eco "$ num não é um palíndromo".
fi
`` `
Versão 2:Usando awk (mais eficiente) Esta versão usa `awk`, que geralmente é mais eficiente para manipulações numéricas, especialmente com números maiores.
`` `BASH
#!/bin/bash
Leia -p "Digite um número:" num
Use Awk para reverter o número e verifique o palíndromo
awk -v num ="$ num" 'Begin {
reversa_num ="";
temp_num =num;
while (temp_num> 0) {
reverted_num =reversed_num (temp_num % 10);
temp_num =int (temp_num / 10);
}
if (num ==reversed_num) {
Imprima num "é um palíndromo".
} outro {
Imprimir num "não é um palíndromo".
}
} '
`` `
Como usar qualquer script: 1. Salve o código como um arquivo (por exemplo, `palindrome.sh`).
2. Torne -o executável:`chmod +x palindrome.sh`.
3. Execute:`./Palindrome.sh`.
4. Digite um número quando solicitado.
Explicação da versão 2 (awk): * `-v num =" $ num "`:passa o número de entrada da variável shell `num` para o script` awk`.
* `BEGIN`:este bloco é executado antes de processar qualquer linha de entrada.
* `reversed_num =" ";`:inicializa uma string vazia para armazenar o número invertido.
* `temp_num =num;`:cria uma cópia temporária do número para evitar modificar o original.
* `while (temp_num> 0)`:loops até que o número temporário se torne 0.
* `reversed_num =reversed_num (temp_num % 10);`:extrai o último dígito usando o operador Modulo (` %`) e anexa -o a `reversed_num`.
* `temp_num =int (temp_num / 10);`:remove o último dígito da divisão inteira (` /`).
* A instrução `if` final compara os números originais e revertidos e imprime a mensagem apropriada.
A versão `awk` é geralmente recomendada para sua eficiência, especialmente ao lidar com números maiores. Escolha a versão que melhor se adapte às suas necessidades e ao ambiente do shell. Lembre-se de lidar com possíveis erros (como entrada não numérica) para um script mais robusto em um ambiente de produção.