背景
装rust探针时,遇到的sh脚本执行错误
脚本为:
# get_architecture
arch=$(uname -m)
# 设置 ARCHITECTURE 变量
if [[ $arch == "aarch64" ]]; then
ARCHITECTURE="aarch64"
elif [[ $arch == "x86_64" ]]; then
ARCHITECTURE="x86_64"
else
ARCHITECTURE="unknown"
fi
github_project="zdz/ServerStatus-Rust"
tag=$(curl -m 10 -sL "https://api.github.com/repos/$github_project/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
echo ${tag}
正常会输出版本号。
大多服务器是可以的,忘记是哪个机器和系统了。
运行报错运行shell脚本时报错 [[ : not found
解决方法
sh脚本功能就是判断两个字符串是否有包含关系,但是在运行至判断表达式时报错,sh命令无法识别"[[]]"表达式。
原因:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而"[[]]"是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可:
将脚本保存为 tag.sh
然后执行
bash tag.sh
就可以成功了。