unix expr mostra resultados estranhos comparando inteiros

2

Quando escrevo

expr 123 \< 5  

o resultado é correto (0) porque expr avalia dois inteiros.
Também

expr 123. \< 5  

fornece o resultado esperado (1) porque agora compara duas cadeias.
Mas

expr "123" \< 5  

dá 0 (eu esperava 1, como antes)
Por quê?

    
por user2431763 28.01.2014 / 19:16

1 resposta

1
expr 123 \< 5

e

expr "123" \< 5

dê a mesma resposta porque o que o comando expr vê em seus argumentos de programa é exatamente o mesmo em ambos os casos. Os argumentos 1, 2 e 3 são 123 , < e 5 em ambos os casos.

Use /bin/echo em vez de expr para ver isso mais claramente.

Escapando e citando são manipulados pelo seu shell . O comando ver uma vez executado é o que sua linha de comando termina como após o shell tem lidado com todos os redirecionamentos, expansões e subtituções, e removeu todas as citações.

    
por 28.01.2014 / 20:05

Tags