gpt4 book ai didi

linux - 与 shell 脚本文件有关的奇怪问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:14 25 4
gpt4 key购买 nike

我在名为 restart_server.sh 的文件中有这个 shell 脚本:

echo "KILLING SERVER SESSION"
kill $(cat serverlastpid.txt)
sleep 20
echo "STARTING SERVER..."
java -jar eu.greensmartcampus-0.0.1-SNAPSHOT-jar-with-dependencies.jar </dev/null>/dev/null 2>&1 &
echo $! > serverlastpid.txt
echo "SERVER STARTED! PID:" $(cat serverlastpid.txt)

如果我单独执行每一行,我会得到:

root@production:/opt/AppServer# echo "KILLING SERVER SESSION"
KILLING SERVER SESSION
root@production:/opt/AppServer# kill $(cat serverlastpid.txt)
root@production:/opt/AppServer# sleep 20
root@production:/opt/AppServer# echo "STARTING SERVER..."
STARTING SERVER...
root@production:/opt/AppServer# java -jar eu.greensmartcampus-0.0.1-SNAPSHOT-jar-with-dependencies.jar </dev/null>/dev/null 2>&1 &
[1] 14620
root@production:/opt/AppServer# echo $! > serverlastpid.txt
root@production:/opt/AppServer# echo "SERVER STARTED! PID:" $(cat serverlastpid.txt)
SERVER STARTED! PID: 14620
root@production:/opt/AppServer#

现在,如果我只是在 shell 脚本文件中运行所有这些行,我将得到以下输出:

root@production:/opt/AppServer# sh restart_server.sh
restart_server.sh: 1: restart_server.sh: echo: not found
STARTING SERVER...
SERVER STARTED! PID: 14777
[1]+ Exit 143 java -jar eu.greensmartcampus-0.0.1-SNAPSHOT-jar-with-dependencies.jar < /dev/null > /dev/null 2>&1
root@production:/opt/AppServer#

一些 echo 消息丢失,屏幕上出现一些错误。

为什么会这样?与单独运行每一行或在 .sh 文件中运行有什么不同?

编辑: 添加#!/bin/bash 作为第一行输出:

root@production:/opt/AppServer# sh restart_server.sh
restart_server.sh: 1: restart_server.sh: #!/bin/bash: not found
KILLING SERVER SESSION
STARTING SERVER...
SERVER STARTED! PID: 15366
root@production:/opt/AppServer#

最佳答案

请参阅 chat 中的讨论.

问题原来是一个以 UTF-8 编码为字节 0xEF 0xBB 0xBF 的 Unicode 字节顺序标记 (BOM),shell 不喜欢它。删除它,并确保 shell 代码将使用 dash 而不是 bash,让事情正常工作。

诊断的关键步骤是:

  • 确定 shell 是 dash 而不是 bash
  • 使用十六进制转储工具检查文件的前几行,以便 BOM 可见。
  • 知道如何去掉 BOM(后面跟着一个换行符很方便,所以 sed 可以很容易地使用)。
  • 使用 sh -x restart_server.sh 查看正在执行的内容。

关于linux - 与 shell 脚本文件有关的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com