執行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

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