在bash中匹配变量的正确语法是什么?
#!/bin/bash
# test1.sh
say_hello()
{
if [ "$1" = true ]; then
echo "hello"
else
echo "goodbye"
fi
}
say_hello
$ sh test1.sh true
> goodbye
如果删除该功能,则它将按预期运行。
#!/bin/bash
# test2.sh
if [ "$1" = true ]; then
echo "hello"
else
echo "goodbye"
fi
$ sh test2.sh true
> hello
我不确定第一个脚本的语法有什么问题。
大家解决并解释了,谢谢您教我。
bash中的函数具有自己的位置参数列表-传递给该函数的参数。
与其他编程语言一样,您需要将参数从主脚本传递给函数:
say_hello()
{
if [ "$1" = "true" ]; then
echo "hello"
else
echo "goodbye"
fi
}
say_hello "$1"
顺便说一句,在这种情况下,"true"
它只是一个字符串,而不是其他编程语言中的布尔值。我只想表达一下。
另一件事,您#!/bin/bash
在shebang行中使用,但是您使用调用了脚本sh script.sh
。虽然在某些系统中/bin/sh
是的链接/bin/bash
,但不一定必须如此。即使这样,bash仍会识别出它已开始/bin/sh
并在兼容模式下运行。如果要使用bash调用脚本,请使用bash script.sh
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句