Bash 脚本无法运行:找不到命令

问题描述 投票:0回答:1

我制作了一个脚本,它将作为 cron 任务运行,每隔 5 分钟执行一次。他的目标是使用预定义的模式读取每天创建的日志文件。它会创建一个 .flag 文件来跟踪已读取的文件,如果它与模式匹配,则会运行 .sh 脚本来重新启动服务。

我已经使用相同的脚本解决了有关错误行终止符的问题(如果这与解决方案相关)。

我的脚本:

#!/bin/bash

LAST_POS_FILE="last_position.flag"

PATTERN='ERROR [pt.gsoft.oasis.platform.plugins.mediaconverter.ejb.messages.MediaConverterMDB]'

LOG_FILE='/var/local/log/server.log'

if [ ! -f "$LAST_POS_FILE" ]; then
        echo 0 > "$LAST_POS_FILE"

fi

LAST_POS=$(cat "$LAST_POS_FILE")

CURR_LOG=$(date+"%Y-%m-%d")

if [ "$LOG_FILE.$CURR_LOG" -nt "$LOG_FILE" ]; then
        LOG_FILE="$LOG_FILE.$CURR_LOG"
fi

if [[ "$LOG_FILE" -nt "$LOG_FILE" ]]; then
        LINE=$(grep -E "$PATTERN" "$LOG_FILE" | awk -F: '{print $1}')

        if [ -n "$LINE" ]; then
                if [ "$LINE" -gt "$LAST_POS" ]; then
                        echo "$LINE" > "$LAST_POS_FILE"

                        ./teste.sh
                fi
        fi
fi

# end of file #

我的终端输出是

filipe@filipe-virtual-machine:~$ sudo ./restarScript.sh
sudo: ./restarScript.sh: command not found

郑重声明,我正在另一台机器上进行测试,因为我没有测试环境,所以目标机器正在运行 Red-Hat(如果需要考虑的话)。

我使用 ShellCheckJDoodle 来获取更详细的错误描述。

Shellcheck 输出:

$ shellcheck myscript
No issues detected!

$

JDoodle 输出:

jdoodle.sh: line 2: $'\r': command not found
jdoodle.sh: line 4: $'\r': command not found
jdoodle.sh: line 6: $'\r': command not found
jdoodle.sh: line 8: $'\r': command not found
jdoodle.sh: line 35: syntax error: unexpected end of file
Command exited with non-zero status 2

我想

$'\r'
\ 行终止符错误是无关紧要的,因为它已经解决了,我只是有语法错误待处理

bash shell sh
1个回答
0
投票

当您没有 bash 时会出现此错误。看起来只安装了 sh 或其他一些 shell。由于 bash 不存在,它会抛出错误 no command。 您可以将 shell 切换到

#!/bin/sh
(相应的命令)或安装 bash 并重试。

© www.soinside.com 2019 - 2024. All rights reserved.