我正在尝试读取包含以下内容的文本文件sport.txt,并尝试将用户输入与在文本文件中找到的运动名称相匹配。
如果找到它将打印“找到运动”,如果没有找到它将打印“未找到运动”。
显示的第一个示例看起来几乎完美,直到我尝试输入一个随机单词并显示错误:
[:==:应为一元运算符
我也尝试""
在显示的第二个示例中使用 for 变量,但它只会打印“未找到运动”,即使我键入了与文本文件中的运动名称完全匹配的运动名称。
文件运动.txt
cycling
swimming
batmintion
代码(示例 1)
#!/bin/bash
file="sports.txt"
read -p "Enter a sports name": sportsName
existingSports=$(grep $sportsName $file);
if [ $existingSports == $sportsName ]; then
echo "Sports Found"
else
echo "No Sports Found"
fi
如果我根据上述代码键入“游泳”,则输出为:
运动发现
现在如果我输入“游泳”,输出是:
找不到运动
如果我输入一个随机单词'asd',输出是:
[: ==: 一元运算符预期
没有找到运动
代码(示例 2)
#!/bin/bash
file="sports.txt"
read -p "Enter a sports name": sportsName
existingSports=$(grep $sportsName $file);
if [ "$existingSports" == "$sportsName" ]; then
echo "Sports Found"
else
echo "No Sports Found"
fi
如果我根据上述代码输入“游泳”,则输出为:
找不到运动
现在如果我输入“游泳”,输出是:
找不到运动
代码(示例 3)
#!/bin/bash
file="sports.txt"
read -p "Enter a sports name": sportsName
existingSports=$(grep $sportsName $file);
if [[ "$existingSports" == "$sportsName" ]]; then
echo "Sports Found"
else
echo "No Sports Found"
fi
如果我根据上述代码键入“游泳”,则输出为:
找不到运动
现在如果我输入“游泳”,输出是:
找不到运动
如前所述,第一个示例几乎接近预期。我应该怎么做才能摆脱错误消息?