gpt4 book ai didi

bash - [ : ==: unary operator expected-bash

转载 作者:行者123 更新时间:2023-11-29 09:48:18 28 4
gpt4 key购买 nike

我正在尝试读取包含以下内容的文本文件 sport.txt,并尝试将用户输入与文本文件中找到的运动名称相匹配。

如果找到它会打印“找到运动”,如果没有找到它会打印“找不到运动”。

显示的第一个示例看起来几乎完美,直到我尝试键入一个随机单词并显示错误:

[: ==: unary operator expected

我还尝试在显示的第二个示例中使用 "" 作为变量,但它只会打印“未找到运动”,即使我输入了与运动名称完全匹配的运动名称在文本文件中。

文件 sports.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

如果我根据上面的代码输入'swimming',输出是:

Sports Found

现在如果我输入“swim”,输出是:

No Sports Found

如果我输入一个随机词“asd”,输出是:

[: ==: unary operator expected
No Sports Found

代码(例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

如果我根据上面的代码输入'swimming',输出是:

No Sports Found

现在如果我输入“swim”,输出是:

No Sports Found

代码(例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

如果我根据上面的代码输入'swimming',输出是:

No Sports Found

现在如果我输入“swim”,输出是:

No Sports Found

如前所述,第一个示例几乎接近预期。我应该怎么做才能摆脱错误消息?

最佳答案

代替这个 block :

existingSports=$(grep $sportsName $file);
if [ $existingSports == $sportsName ]; then
echo "Sports Found"
else
echo "No Sports Found"
fi

您可以使用 grep -qword boundaries 并将您的代码减少到单行:

grep -q "\<$sportsName\>" "$file" && echo "Sports Found" || echo "No Sports Found"

根据man grep:

-q, --quiet, --silent

Quiet; do not write anything to standard output. Exit immediately
with zero status if any match is found, even if an error was detected.

关于bash - [ : ==: unary operator expected-bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19630619/

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