执行sh脚本提示“[[: not found”解决方案

背景

不想听我罗嗦,可以直接跳转到最后。

笔记本买回来自带windows10,然后由于好奇心重,又给它折腾装上了ubuntu(本来是想支持国产deepin,奈何问题太多)。万恶之源开始,ubuntu很多常用软件没法直接用apt安装,安装完微信,使用微信一会儿会自动退出登录,无奈卸载。但问题是:非dpkg/apt/snap方式安装,卸载也不知道怎么卸载,于是查找 wechat关键字,找到一个 wechat.sh。

解决

查看脚本

部分help代码如下

help(){
  echo "wechat [-h] [-i] [-f] [-c] [--start|start] [--remove] [--instance]"
  echo "  -h, --help            Show help"
  echo "  -i, --install         Install this script to system"
  echo "  -f, --force           Force install or reinstall"
  echo "  -c, --clean           Clean all wechat container"
  echo "      --start           Start wechat"
  echo "      --update          Update script"
  echo "      --remove          Remove this script"
  echo "      --instance        Create a instance wechat container, you can create more then one using this option"
  return 0
}

执行脚本

./wechat.sh --remove

没有任何反应。。。看了下remove函数的代码,应该会把 wechat.sh文件给删除的,但是文件依然还在,可以断定执行未成功

remove(){
  [ -e ~/.local/bin/wechat.sh ] && rm -f ~/.local/bin/wechat.sh\
  && echo "remove ~/.local/bin/wechat.sh"

  [ -e ~/.local/bin/wechat ] && rm -f ~/.local/bin/wechat

  [ -e ~/.local/share/icons/hicolor/256x256/apps/WINE_WECHAT.png ] \
  && rm -f ~/.local/share/icons/hicolor/256x256/apps/WINE_WECHAT.png\
  && echo "remove ~/.local/share/icons/hicolor/256x256/apps/WINE_WECHAT.png"


  [ -e /home/$(whoami)/.local/share/applications/Wechat.desktop ] \
  && rm -f /home/$(whoami)/.local/share/applications/Wechat.desktop\
  && echo "remove ~/.local/share/applications/Wechat.desktop"

  return 0
}

调试脚本

sh -x ./wechat.sh --remove

提示如图

在这里插入图片描述
第148行代码如下

 while [[ $# > 0 ]];do

问题解决

修改执行方式
before:

$ sh wechat.sh

after:

$ bash wechat.sh

注意:
查看.sh脚本的时候一定要看第一行
wechat.sh 的第一行:

#!/usr/bin/env bash

要区分两种情况
#!/bin/bash
或者是
#!/bin/sh

参考:string-comparison-in-bash-not-found

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章