2015-03-21 2 views
0

Я создавал для назначения вывода if/else переменной, но продолжаю получать ошибку.Unix Bash - Назначить, если/else для переменной

Для примера:

mathstester=$(If [ 2 = 2 ] 
Then echo equal 
Else 
echo "not equal" 

fi) 

Поэтому, когда я добавить $mathstester в сценарий, выложенный как это:

echo "Equation: $mathstester" 

Он должен показывать:

Equation: Equal 

Do I нужно выложить его по-другому? Возможно ли это?

+0

что вы пытаетесь сделать? в вашем операторе if отсутствует 'fi'. – HuStmpHrrr

+0

Извините. Забыл добавить его здесь. – space149

+0

Это не правильный синтаксис для 'if'. Это будет работать: 'x = $ (if [2 = 2], затем echo equal; else echo" not equal; fi) '. См. Https://www.gnu.org/software/bash/manual/bash.html # Conditional-Constructs. Обратите внимание, что дело имеет значение - 'If' и' if' - это не то же самое. – Ulfalizer

ответ

1

Ввод заявления if в задании довольно неуклюжий и легко ошибается. Более стандартный способ сделать это, чтобы поставить задание внутри if:

if [ 2 = 2 ]; then 
    mathstester="equal" 
else 
    mathstester="not equal" 
fi 

Как для проверки переменных, вы можете использовать что-то вроде if [ "$b" = 2 ] (which'll делать сравнение строк, например, если Ь " 02 "он не будет равен" 2 ") или if [ "$b" -eq 2 ], что делает числовое сравнение (только целые числа). Если вы фактически используете bash (а не только общую оболочку POSIX), вы также можете использовать if [[ "$b" -eq 2 ]] (аналогично [ ], но с несколько более сильным синтаксисом для более сложных выражений) и ((b == 2)) (они делают только числовые выражения и имеют очень другой синтаксис). См. BashFAQ #31: What is the difference between test, [ and [[ ? для более подробной информации.

2

Правильный способ использования if является:

mathtester=$(if [ 2 = 2 ]; then echo "equal"; else echo "not equal"; fi) 

Для использования этого в многопоточном заявлении вы можете рассмотреть вопрос о поиске link.

+0

Как насчет того, если у меня есть переменная с именем $ number, которая равна 5, как бы поместить это в оператор if? – space149

+0

Как насчет чтения основ bash? http://www.tldp.org/ЛДП/Bash-Beginners-Guide/html / – baky

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