2013-11-22 3 views
1

Я пытаюсь выяснить, работает ли экран с функцией или нет. Для того, чтобы сделать его более простым ив написал небольшой тестовый скрипт:Bash, передающий переменную из функции

#! /bin/bash 

function status() 
    { 
     if [ $a==1 ] 
     then 
      echo 1 
     else 
      echo 0 
     fi 
    } 

a=1 
echo $(status) 
a=0 
echo $(status) 
status 
if [ $(status)==0 ] 
then 
    echo "Success" 
else 
    echo "Fail" 
fi 

Выход составляет: 1; 1; Sucess

Но это должно быть: 1; 0; Sucess

Что я делаю неправильно?

Большое спасибо, Клейс

ответ

1

Вам нужно пространство вокруг ==

так: if [ $a==1 ] должно быть:

if [ "$a" == 1 ] 

и

if [ $(status) == 0 ] 
+0

Большое спасибо, я должен был знать, что ... – user3022011

+0

Woops ... Просто увидел твое лол .. – SriniV

+0

Кроме того, ' == 'не определен. Он может работать в bash, но правильно это только один знак равенства '=' –

0

Попробуйте это:

Удалить пробелы вокруг ==, включены цитаты и удалить вызов для статуса

#! /bin/bash 

function status() 
    { 
     if [ $a == '1' ] 
     then 
      echo 1 
     else 
      echo 0 
     fi 
    } 

a=1 
echo $(status) 

a=0 
echo $(status) 

if [ $(status) == '0' ] 
then 
    echo "Success" 
else 
    echo "Fail" 
fi 
Смежные вопросы