Bash shell脚本中函数的简单使用
我试着使用下面的简单用法。但是我得到了一元运算符的错误,输出总是Bash shell脚本中函数的简单使用,bash,unix,shell,Bash,Unix,Shell,我试着使用下面的简单用法。但是我得到了一元运算符的错误,输出总是1。有人能帮我改正吗 #!/bin/bash checkit () { if [ $1 = "none" ] then echo "none" else echo "one" fi } checkit 用如下引号将$1括起来: #!/bin/bash checkit () { if [ "$1" = "none" ] then echo "none" else echo "one" fi }
1
。有人能帮我改正吗
#!/bin/bash
checkit ()
{
if [ $1 = "none" ]
then
echo "none"
else
echo "one"
fi
}
checkit
用如下引号将
$1
括起来:
#!/bin/bash
checkit ()
{
if [ "$1" = "none" ]
then
echo "none"
else
echo "one"
fi
}
checkit
使用
[[
关键字代替[
内置:
#!/bin/bash
checkit ()
{
if [[ $1 = none ]]
then
echo none
else
echo one
fi
}
checkit
请阅读,并且。
<1
是整个脚本的参数,而不是函数checkit()
。因此也将相同的参数发送到函数
#!/bin/bash
checkit ()
{
if [ $1 = "none" ]
then
echo "none"
else
echo "one"
fi
}
checkit $1
这必须起作用。输出仍然是一个。使用=和==之间的区别是什么当然输出是
1
,因为$1
是空的,而不是none
。请阅读一些有关bash编程的基础知识。实际上我会主张使用[
而不是[
,因为[[
是非标准的,某些shell不支持。请记住正确引用变量。输出仍然是一个。根据man,使用=和==之间的区别是什么[
表达式中没有使用==
这样的东西。=
比较字符串。如果我只使用下面的方法,它会起作用。如果[“$1”=“none”]则回显“none”,否则回显“one”fit使用=和==”之间的区别是什么?始终引用您的变量:[“$1”=“none”]
。检查“$1”
AFAICT在Bash中“=”和“=”之间没有区别。[$var==”“]
…如果变量$var
为空,测试将变为,[=”“]
并最终抛出错误。最好像@glenn所说的那样引用变量。@randeepsp:回答您关于=
和=
的问题:POSIX标准仅定义=
运算符(请参阅),=
是一些shell和test
的一些实现所支持的扩展。您应该始终尝试使脚本可移植,从而避免=
。