Imprime o número dado na ordem inversa [fechado]

4
clear
echo "Enter a number"
read n
sd=0
rev=0

while [ $n -gt 0 ]
do
    sd=$(( $n % 10 ))
    rev=$(( $rev *\ 10 + $sd ))
    n=$(( $n / 10 ))
done

echo "Reverse number of entered digit is $rev"

Do código acima, não consigo obter a saída necessária. Em vez disso, esse erro é exibido.

./Display: line 17: 0 *\ 10 + 4 : syntax error: operand expected (error token is "\ 10 + 4 ")
Reverse number of entered digit is 0

Eu não sei porque esse erro é exibido, por favor me ajude a descobrir isso.

    
por vikrant 24.02.2013 / 07:06

8 respostas

16

Os números também são texto. O texto pode ser revertido com rev sem qualquer aritmética.

#!/bin/bash
clear
read -p "Enter a number: " num
echo $num | rev
    
por 24.02.2013 / 10:40
3

O erro já havia apontado claramente o problema: 0 *\ 10 + 4 não é uma expressão aritmética válida.

Acredito que *\ seja um erro de digitação para * . Corrija este erro de digitação e o script estará OK.

    
por 24.02.2013 / 07:38
1

*\ não é a expressão válida. Em vez disso, tente * , que remove o significado especial do caractere * . O caractere * é um caractere curinga, e é por isso que o erro apareceu.

    
por 30.08.2013 / 16:23
1
echo "Enter a number"
read n
sd=0
rev=0

while [ $n -gt 0 ]
do
    sd=$(( $n % 10 ))
    rev='expr $rev \* 10 + $sd' 
    n=$(( $n / 10 ))
done

echo "Reverse number of entered digit is $rev"
    
por 03.10.2015 / 16:52
0

* é um caractere curinga. Por isso, certifique-se de adicionar um ' \ ' antes de usá-lo

    
por 15.02.2015 / 18:29
0
echo "Enter a number"
read n
sd=0
rev=0

while [ $n -gt 0 ]
do
    sd=$(( $n % 10 ))
    rev=$(( $rev * 10 + $sd ))
    n=$(( $n / 10 ))
done

echo "Reverse number of entered digit is $rev"

Isso deve funcionar * \ não é o formulário correto apenas use * para isso

    
por 13.10.2015 / 15:02
-1
echo "enter the number"
read n
rev=0
sd=0
while [$n -gt 0]
do
    sd='expr $n%10'
    rev='expr $rev\*10+$sd'
    n='expr $n/10'
done
echo "the reverse number s: $rev"
    
por 20.06.2015 / 21:59
-2
for i in $*; do
  x=$i"  "$x
done;
echo "The Reverse order is $x"
    
por 28.11.2015 / 13:09