Bash 字符串相同,但if/then表示它们不相等

Bash 字符串相同,但if/then表示它们不相等,bash,shell,scripting,Bash,Shell,Scripting,我正在尝试制作一个脚本来获取GitHub项目的最新版本,并检查它是否已更新。剧本是: #/bin/bash getVersion(){ 卷曲——沉默”https://api.github.com/repos/pwn20wndstuff/Undecimus/releases/latest" | 格雷普的“标签名称”:| sed-E's/*“([^”]+)”*/\1/' } 写转换(){ func_result=“$(getVersion)” echo$func_result>version.txt

我正在尝试制作一个脚本来获取GitHub项目的最新版本,并检查它是否已更新。剧本是:

#/bin/bash
getVersion(){
卷曲——沉默”https://api.github.com/repos/pwn20wndstuff/Undecimus/releases/latest" |
格雷普的“标签名称”:|
sed-E's/*“([^”]+)”*/\1/'
}
写转换(){
func_result=“$(getVersion)”
echo$func_result>version.txt
}
checkForUpdate(){
currentVersion=$(cat version.txt)
latestVersion=“$(getVersion)”
如果[“$currentVersion”==“$version”];则
回声“字符串相等”
其他的
echo“字符串不相等”
echo“当前版本为:$currentVersion”
echo“最新版本为:$latestVersion”
fi
}
输出
/get\u latest\u release.sh checkForUpdate

Strings are not equal 
current version is: v4.2.1 
latest version is: v4.2.1
如您所见,版本相同,但
if-then
检查返回的是它们不同,而不是
字符串相等

感谢您的帮助。

您的支票

if [ "$currentVersion" == "$version" ]; then
应该是

if [ "$currentVersion" == "$latestVersion" ]; then
你的支票

if [ "$currentVersion" == "$version" ]; then
应该是

if [ "$currentVersion" == "$latestVersion" ]; then

空格可能存在差异。尝试用引号括住打印的值,空格就会明显可见。调试脚本的第一步应该是将
set-x
放在开头。然后它将跟踪执行,并显示所有变量。以及
版本
变量分配到哪里?键入错误?该死它。这么简单的一件事。谢谢!我花了几个小时才注意到E可能在空格方面存在差异。尝试用引号括住打印的值,那么空格就会明显。调试脚本的第一步应该是在开始处放置
set-x
。然后它将跟踪执行,并显示所有变量les.还有
版本
变量分配在哪里?输入错误?该死。这么简单的事情。谢谢!我花了好几个小时才注意到在bash中使用
[[[/code>。@Jetchisel是的,
[[…]]
更好。我还可以建议使用
${currentVersion}
(带花括号),将
grep
sed
组合在
getVersion()
中的一个命令中,并在
echo$func_result>version.txt
中使用引号和大括号,但我想在不太分散注意力的情况下弄清楚主要问题是什么。在bash中使用
[
。@Jetchisel是的,
[…]
更好。我还建议使用
${currentVersion}
(带花括号),将
grep
sed
组合在
getVersion()的一个命令中
,并在
echo$func_result>version.txt中使用引号和大括号,但我想在不太分散注意力的情况下澄清主要问题是什么。