#!/bin/bash # 修复脚本行结束符问题 # 将Windows格式的CRLF转换为Unix格式的LF echo "=== 修复脚本行结束符工具 ===" echo "" # 检查是否有dos2unix命令 if command -v dos2unix &> /dev/null; then echo "[信息] 使用dos2unix工具修复行结束符" # 修复原始脚本 if [[ -f "create-compose-package-multiplatform.sh" ]]; then echo "[信息] 修复 create-compose-package-multiplatform.sh" dos2unix create-compose-package-multiplatform.sh chmod +x create-compose-package-multiplatform.sh fi # 修复WSL版本脚本 if [[ -f "create-compose-package-wsl.sh" ]]; then echo "[信息] 修复 create-compose-package-wsl.sh" dos2unix create-compose-package-wsl.sh chmod +x create-compose-package-wsl.sh fi elif command -v sed &> /dev/null; then echo "[信息] 使用sed工具修复行结束符" # 使用sed移除\r字符 if [[ -f "create-compose-package-multiplatform.sh" ]]; then echo "[信息] 修复 create-compose-package-multiplatform.sh" sed -i 's/\r$//' create-compose-package-multiplatform.sh chmod +x create-compose-package-multiplatform.sh fi if [[ -f "create-compose-package-wsl.sh" ]]; then echo "[信息] 修复 create-compose-package-wsl.sh" sed -i 's/\r$//' create-compose-package-wsl.sh chmod +x create-compose-package-wsl.sh fi elif command -v tr &> /dev/null; then echo "[信息] 使用tr工具修复行结束符" # 使用tr删除\r字符 if [[ -f "create-compose-package-multiplatform.sh" ]]; then echo "[信息] 修复 create-compose-package-multiplatform.sh" tr -d '\r' < create-compose-package-multiplatform.sh > temp_file && mv temp_file create-compose-package-multiplatform.sh chmod +x create-compose-package-multiplatform.sh fi if [[ -f "create-compose-package-wsl.sh" ]]; then echo "[信息] 修复 create-compose-package-wsl.sh" tr -d '\r' < create-compose-package-wsl.sh > temp_file && mv temp_file create-compose-package-wsl.sh chmod +x create-compose-package-wsl.sh fi else echo "[警告] 未找到合适的工具来修复行结束符" echo "[提示] 请安装 dos2unix 工具: sudo apt-get install dos2unix" echo "" echo "或者手动运行以下命令:" echo "sed -i 's/\r$//' create-compose-package-multiplatform.sh" echo "sed -i 's/\r$//' create-compose-package-wsl.sh" echo "chmod +x *.sh" exit 1 fi echo "" echo "[成功] 行结束符修复完成" echo "" echo "现在可以运行以下脚本:" echo "- ./create-compose-package-multiplatform.sh (原始多平台版本)" echo "- ./create-compose-package-wsl.sh (WSL优化版本)" echo "- create-compose-package-windows.bat (Windows批处理版本)" echo "" # 验证脚本是否可执行 echo "=== 验证脚本 ===" for script in create-compose-package-multiplatform.sh create-compose-package-wsl.sh; do if [[ -f "$script" ]]; then if [[ -x "$script" ]]; then echo "[✓] $script 可执行" else echo "[✗] $script 不可执行" chmod +x "$script" echo "[修复] 已设置 $script 为可执行" fi # 检查是否还有\r字符 if grep -q $'\r' "$script" 2>/dev/null; then echo "[警告] $script 仍包含Windows行结束符" else echo "[✓] $script 行结束符正常" fi fi done echo "" echo "修复完成!"