运行shell脚本时报错"[[ : not found"解决方法
<h1>背景</h1><p>装rust探针时,遇到的sh脚本执行错误</p>
<p>脚本为:</p>
<pre><code># 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}
</code></pre>
<p>正常会输出版本号。</p>
<p>大多服务器是可以的,忘记是哪个机器和系统了。</p>
<p>运行报错运行shell脚本时报错 <code>[[ : not found</code></p>
<h1>解决方法</h1>
<p>sh脚本功能就是判断两个字符串是否有包含关系,但是在运行至判断表达式时报错,sh命令无法识别"[[]]"表达式。</p>
<p>原因:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而"[[]]"是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可:</p>
<p>将脚本保存为 <code>tag.sh</code></p>
<p>然后执行<br />
<code>bash tag.sh</code><br />
就可以成功了。</p>
页:
[1]