生信喵 发表于 2024-12-30 10:00:02

运行shell脚本时报错"[[ : not found"解决方法

<h1>背景</h1>
<p>装rust探针时,遇到的sh脚本执行错误</p>
<p>脚本为:</p>
<pre><code># get_architecture
arch=$(uname -m)
# 设置 ARCHITECTURE 变量
if [[ $arch == &quot;aarch64&quot; ]]; then
    ARCHITECTURE=&quot;aarch64&quot;
elif [[ $arch == &quot;x86_64&quot; ]]; then
    ARCHITECTURE=&quot;x86_64&quot;
else
    ARCHITECTURE=&quot;unknown&quot;
fi

github_project=&quot;zdz/ServerStatus-Rust&quot;
tag=$(curl -m 10 -sL &quot;https://api.github.com/repos/$github_project/releases/latest&quot; | grep &quot;tag_name&quot; | head -n 1 | awk -F &quot;:&quot; '{print $2}' | sed 's/\&quot;//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命令无法识别&quot;[[]]&quot;表达式。</p>
<p>原因:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而&quot;[[]]&quot;是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可:</p>
<p>将脚本保存为 <code>tag.sh</code></p>
<p>然后执行<br />
<code>bash tag.sh</code><br />
就可以成功了。</p>
页: [1]
查看完整版本: 运行shell脚本时报错"[[ : not found"解决方法