avatar

运维/java微服务部署

记录一个 shell 脚本的坑

比如如下脚本,执行的时候提示

1
./restart.sh: 行 1: $'\r': 未找到命令

出现这样的错误,是因为 Shell 脚本在 Windows 系统编写时,每行结尾是\r\n,而在 Linux 系统中行每行结尾是\n,所以在 Linux 系统中运行脚本时,会认为\r 是一个字符,导致运行错误。
虽然我是 mac 编写的,但应该也是这个意思吧。

解决方法
去除 Shell 脚本的\r 字符:

方法 1

1
sed -i 's/\r//' restart.sh

方法 2

1
dos2unix one-more.sh

如果权限不足:

1
chmod +x restart.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

#!/bin/bash
# 停止容器
echo "Stopping container ruoyi-cloud-gen..."
docker stop ruoyi-cloud-gen
wait
if [ $? -eq 0 ]; then
echo "Container stopped successfully."
else
echo "Failed to stop container."
fi

# 删除容器
echo "Removing container ruoyi-cloud-gen..."
docker rm ruoyi-cloud-gen
wait
if [ $? -eq 0 ]; then
echo "Container removed successfully."
else
echo "Failed to remove container."
fi

# 删除镜像
echo "Removing image ruoyi-cloud-gen..."
docker rmi ruoyi-cloud-gen
wait
if [ $? -eq 0 ]; then
echo "Image removed successfully."
else
echo "Failed to remove image."
fi

# 构建镜像
echo "Building image ruoyi-cloud-gen..."
docker build -f dockerfile -t ruoyi-cloud-gen .
wait
if [ $? -eq 0 ]; then
echo "Image built successfully."
else
echo "Failed to build image."
fi

# 运行容器
echo "Running container ruoyi-cloud-gen..."
docker run -d --name ruoyi-cloud-gen -p 9202:9202 -v /home/xxx/ruoyi_could_drg/server/modules/gen/logs:/app/xxx/ruoyi_could_drg/gen/logs --restart=always ruoyi-cloud-gen
wait
if [ $? -eq 0 ]; then
echo "Container started successfully."
else
echo "Failed to start container."
fi

# 查看容器日志
echo "Showing container logs..."
docker logs -f --tail 200 ruoyi-cloud-gen
if [ $? -eq 0 ]; then
echo "Container logs displayed successfully."
else
echo "Failed to display container logs."
fi
文章作者: 小黑
文章链接: http://ynxh.xyz/2023/11/08/运维/java微服务部署/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小黑的小站
打赏
  • 微信
    微信
  • 支付寶
    支付寶
2