Eu não entendo porque isso diz “Expressão Integral Esperada”

1

Então aqui está o meu código

#!bin/bash

PS3='Pick the one you like and we will continue: '

select color in "Blue" "Black" "Orange" "Yellow"
do
echo "You selected $color"
break
done

echo

var=":"

echo "Alrighty, please type in the password as you have specified the    color $color"

read var

until  [ "$var" -ne password ] 
do
echo "You have specified a wrong password, and a wrong color please leave the script the script"
break
done

A resposta do terminal é a seguinte:

1) Blue
2) Black
3) Orange
4) Yellow
Pick the one you like and we will continue: 1
You selected Blue

Alrighty, please type in the password as you have specified the color Blue
23
/root/Desktop/Bash/Test_1.sh: line 16: [: password: integer expression  expected
You have specified a wrong password, and a wrong color please leave the script
    
por IDO EVERYTHING 02.05.2017 / 05:49

1 resposta

2

Você está fazendo:

[ "$var" -ne password ]

-ne (não igual) é um operador inteiro de [ , ou seja, ele espera inteiros em ambos os lados.

Mas você tem var=":" no início e apesar de estar read -ing entrada do usuário e colocar isso em var , presumivelmente a entrada não é um inteiro, levando à mensagem de erro.

Em qualquer caso, se fosse um inteiro, a verificação falharia, porque password é uma string para começar.

Se você quiser comparar strings por igualdade, o operador é = :

[ "$var" = password ]

Não-igualdade:

[ "$var" != password ]
    
por 02.05.2017 / 05:54

Tags