Bash从函数传递变量

时间:2013-11-22 14:15:41

标签: 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
    echo "Success"
else
    echo "Fail"
fi

输出为:1; 1;成功

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

我做错了什么?

非常感谢,chrys

2 个答案:

答案 0 :(得分:1)

您需要==

周围的空格

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

if [ "$a" == 1 ] 

if [ $(status) == 0 ]

答案 1 :(得分: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