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