2013-07-11 2 views
0

Недавно я смутился в следующей ситуации. В чем разница между двумя if использование:Hp-Ux.Shell.Использование переменных в «if»

Case выход 1

amount=10 
if [[ $amount -eq 10 ]] 
then 
    echo "something" 
fi 

сценарий:

$ ./1.sh 
something 

Случай 2

if [[ amount -eq 10 ]] 

Это также работает (обратите внимание, что имя переменной не содержит $).

Итак, вопрос в том, как он работает даже без знака доллара в имени переменной.

P.S. Я использую оболочку POSIX на HP-UX.

ответ

1

man bash

ARITHMETIC ОЦЕНКА ... переменные оболочки допустимы как операнды; расширение параметра составляет , сформированное до вычисления выражения. В пределах выражения, переменные оболочки также могут ссылаться по имени без использования синтаксиса расширения параметра .

В этом контексте оболочка не ожидает ничего, кроме цифр, поэтому она расширяет строки как переменные. Это имеет смысл для меня.

+0

Спасибо за ваш ответ и редактирование – SergeyT

Смежные вопросы