Bash 字符串相同,但if/then表示它们不相等
我正在尝试制作一个脚本来获取GitHub项目的最新版本,并检查它是否已更新。剧本是: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
#/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中使用引号和大括号,但我想在不太分散注意力的情况下澄清主要问题是什么。