Bash从函数传递变量

Bash从函数传递变量,bash,function,variables,echo,Bash,Function,Variables,Echo,我试图找出是否有一个屏幕运行与功能。为了让它更简单,我写了一个小测试脚本: #! /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

我试图找出是否有一个屏幕运行与功能。为了让它更简单,我写了一个小测试脚本:

#! /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.成功

但应该是:1,;0;成功

我做错了什么


非常感谢,chrys

您需要在
==

所以:
如果[$a==1]
应该是:

if [ "$a" == 1 ] 


您需要在
==

所以:
如果[$a==1]
应该是:

if [ "$a" == 1 ] 


试试这个:

删除==周围的空格,包括引号,并删除对状态的调用

#! /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

试试这个:

删除==周围的空格,包括引号,并删除对状态的调用

#! /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

此外,
==
未定义。它可能在bash中工作,但正确地说,它只是一个等号
=
@JoSo。问题被标记为
bash
,问题代码以
开头/bin/bash
。我不确定该评论是否正确。@devnull:From
bash
manpage:“
=
应与POSIX一致性测试命令一起使用。”@JoSo-Hmm。。我假设您总是通过说
bash--posix
@JoSo来启动
bash
,因此遵循
sh
标记而不是
bash
可能更有意义。否?此外,
==
未定义。它可能在bash中工作,但正确地说,它只是一个等号
=
@JoSo。问题被标记为
bash
,问题代码以
开头/bin/bash
。我不确定该评论是否正确。@devnull:From
bash
manpage:“
=
应与POSIX一致性测试命令一起使用。”@JoSo-Hmm。。我假设您总是通过说
bash--posix
@JoSo来启动
bash
,因此遵循
sh
标记而不是
bash
可能更有意义。不