gpt4 book ai didi

linux - Bash : syntax error operand expected “=” , in assignment statement in a for loop

转载 作者:行者123 更新时间:2023-12-03 08:25:24 33 4
gpt4 key购买 nike

编辑:我认为它没有选择$ 1作为操作数。我尝试将其存储在变量中,然后尝试赋值,但似乎没有效果。

编辑2 :根据要求提供了最小的可复制脚本。

代码的错误生成部分如下:

check() {
if [ $1 -lt $2 ]; then
for((var=$1; var<$2; var++)); do
if [ $((var%2)) -eq 0 ]; then
echo "it's an even number"
fi
done
fi
}

if [ $# -eq 2 ]; then
check
fi


该函数的其余代码将附在下面。该函数要重新输入很长;我正在通过VM使用ubuntu,该VM不允许将项目复制到VM中或从VM中粘贴出来,但这可能只是一项设置。

part 1 of the function

part 2 of the function

最佳答案

您正在通过以下方式调用功能

check

也就是说,您没有传递任何参数,因此$ 1和$ 2为空,因此这是行不通的。你将不得不写
check "$@"

要么
check "$1" "$2"

取决于您要实现的目标。

但是,使用原始代码,然后应该为 if语句获取一条错误消息。
[: -lt: unary operator expected

更新:正如GordonDavisson在他的评论中指出的那样,您不会在这里遇到此语法错误,因为在您的情况下两个操作数都丢失了,因此 -lt失去了被视为运算符的含义。

顺便说一句,如果您以
if (( $1 < $2 )); then

您将收到语法错误(bash:((:(:<:语法错误:应为操作数(错误标记为“<”)))

关于linux - Bash : syntax error operand expected “=” , in assignment statement in a for loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134126/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com