porque este programa de script de shell não está funcionando

1
echo "enter one no"
read n

rem='expr $n % 2'


if [ $rem -eq 0 ]

then
    echo "Number $n is even"
else
    echo "Number $n is odd"
fi

durante a execução deste programa, bash está mostrando mensagens como "muitos argumentos".

    
por Achal 20.03.2016 / 06:34

2 respostas

2

Isso porque você está fazendo:

if [ expr $n % 2 -eq 0 ]

Como assim?

Porque

rem='expr $n % 2'

está atribuindo a variável rem como string expr $n % 2 .

Você precisa de substituição de comando:

rem=$(expr $n % 2)

Use também o operador aritmético nativo de bash em vez de expr :

rem=$(( $n % 2 ))
    
por heemayl 20.03.2016 / 06:43
0
  • use o recurso de prompt interno da leitura read -p "Enter one num" n

  • preferem usar $( . . .) , aspas simples não expandem os comandos. rem="$(expr $n % 2)"

  • Cite as variáveis ao usá-las "$rem"

  • use no máximo uma linha de quebra entre if e then

    if [ "$rem" -eq 0 ] then

por Sergiy Kolodyazhnyy 20.03.2016 / 06:49