====== 針對 shell script 測試工具(shellcheck) ====== * 因為最近用 AI 協助撰寫不少 shell script , 愈寫愈複雜, 想想應該要找個測試工具來幫忙 * 以下是使用 shellcheck 的方式 ===== 安裝方式 ===== * Ubuntu / Debian sudo apt install shellcheck ===== 建議測試原則 ===== * 只修正 critical 項目 shellcheck -S error scripts/*.sh * 範例: * 全部列出 jonathan@200816-NB:~/github/docker-compose$ shellcheck scripts/*.sh In scripts/alpine_upgrade.sh line 23: echo -e "${BLUE}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" ^-- SC3037 (warning): In POSIX sh, echo flags are undefined. In scripts/alpine_upgrade.sh line 27: echo -e "${GREEN}[SUCCESS]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" ^-- SC3037 (warning): In POSIX sh, echo flags are undefined. In scripts/alpine_upgrade.sh line 31: echo -e "${YELLOW}[WARNING]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" ^-- SC3037 (warning): In POSIX sh, echo flags are undefined. In scripts/alpine_upgrade.sh line 35: echo -e "${RED}[ERROR]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" ^-- SC3037 (warning): In POSIX sh, echo flags are undefined. In scripts/alpine_upgrade.sh line 51: trap cleanup_on_error ERR ^-^ SC3047 (warning): In POSIX sh, trapping ERR is undefined. : * 只看 error jonathan@200816-NB:~/github/docker-compose$ shellcheck -S error scripts/*.sh jonathan@200816-NB:~/github/docker-compose$ {{tag>bash}}