Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash shell脚本中函数的简单使用_Bash_Unix_Shell - Fatal编程技术网

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
的一些实现所支持的扩展。您应该始终尝试使脚本可移植,从而避免
=