我是 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 周围的引号实际上是不必要的,但它们不会造成任何损害)