You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本用if字符串判断区分Ubuntu、Debian做差异化配置报错求解

错误原因

[[ ]]是bash的条件判断语法块,内部只能写条件表达式,不能直接执行外部命令。你没有用命令替换捕获awk的输出,bash会把awk及后续参数当成条件运算符解析,直接触发语法错误。

修复代码

你可以用$()语法捕获awk命令的输出再做比较:

if [[ $(awk '{gsub(/ /, "", $1); print $1}' /etc/issue) == "Ubuntu" ]]; then
    gsettings set org.gnome.mutter overlay-key ''
    gsettings set org.gnome.shell.extensions.dash-to-dock hot-keys false
fi
更稳定的实现方案

读取/etc/issue判断发行版可靠性较低,推荐用所有主流发行版都兼容的/etc/os-release文件判断,还可以直接扩展Debian的配置分支:

source /etc/os-release
if [[ $ID == "ubuntu" ]]; then
    # Ubuntu 专属配置
    gsettings set org.gnome.mutter overlay-key ''
    gsettings set org.gnome.shell.extensions.dash-to-dock hot-keys false
elif [[ $ID == "debian" ]]; then
    # Debian 专属配置,可自行补充
    :
fi

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:45:03