Transmission Docker运行bash脚本出现:not found与unexpected "("报错求解
问题根因排查
你遇到的报错由两个核心问题导致:
- 脚本文件的换行符是Windows格式(CRLF),Linux shell无法识别行尾的
\r字符,所以会报xxx: not found类错误,同时行号计数也会出现偏差 - 你用
sh执行标注了#!/bin/bash的脚本:sh是POSIX标准shell,不支持bash专属的数组定义DONE_STATES=("Seeding" "Stopped" "Finished" "Idle")语法,因此触发语法错误。
解决步骤
- 转换脚本换行符为Unix格式(LF)
如果你容器里有dos2unix工具,直接执行:
没有dos2unix可以用sed直接替换行尾的dos2unix transmission-post-stop2.sh\r字符:sed -i 's/\r$//' transmission-post-stop2.sh - 给脚本添加可执行权限
chmod +x transmission-post-stop2.sh - 改用bash执行脚本
不要用sh启动,直接执行:
也可以显式指定bash执行:./transmission-post-stop2.shbash transmission-post-stop2.sh
额外验证建议
脚本执行前可以先在容器内手动运行transmission-remote 127.0.0.1:9001 --auth xyz:xyz --list,确认Transmission RPC接口可以正常连接,避免后续脚本运行时出现连接报错。
内容的提问来源于stack exchange,提问作者Elo Bizne
相关产品推荐
相关产品推荐

