我该如何摆脱未找到命令?

我该如何摆脱未找到命令?

我是 shell 脚本的新手,目前面临一个无法解决的问题。

这是错误:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found

这是我的代码(一个简单的循环)

#!/bin/bash
until [$number= "7"];do 
bla bla bla
echo -n "Please enter your option : "
read number
case $number in
7) exit;;
*) echo "Please enter number from 1-7"
esac
done

我的代码仍然运行良好,只是每次循环重新启动时都会弹出该错误,而我找不到解决方案。

基本上,我想要的是摆脱“未找到命令”错误,我的代码有问题吗?

问题是我尝试省略空格并将“放在我的 $number 上,但问题仍然存在。

对于关于是的评论,错误消息抱怨

[=

通过定义它是否意味着

number=0

但是这并不能解决我的问题,它仍然显示错误。我确实在其中有其他代码,只是一些函数,但这个问题一直存在,而且似乎不受这些函数的影响,因为我已经删除了所有函数并尝试了它。
我的程序仍在运行,但只是不断向我抛出此错误消息:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found

答案1

由于您的脚本中没有第 155 行,我猜测它对应于您向我们展示的第 2 行。

您目前有

until [$number = "7"];do

空格在 bash 中很重要,测试要求括号内有空格。[是 的别名test。因此,您至少需要有

until [ $number = " 7" ]; do

就目前情况而言,由于$number为空,bash 会尝试调用[=命令。由于$number可以为空或包含空格,因此您还应该将其引号括起来,以便将其算作一个且只有一个参数。该行应该是

until [ "$number" = "7" ]; do

(7 周围的引号实际上是不必要的,但它们不会造成任何损害)

相关内容