shell Bash脚本不工作:未找到命令[重复]

fkaflof6  于 2023-03-24  发布在  Shell
关注(0)|答案(1)|浏览(257)

此问题在此处已有答案

Are shell scripts sensitive to encoding and line endings?(14个答案)
2天前关闭。
我做了一个脚本,将运行作为一个cron任务,执行本身在5分钟的时间间隔。目标是让他读取日志文件,这是每天创建的,使用预定义的模式。它创建一个.flag文件,用于跟踪已经被读取,如果它匹配的模式,它运行一个.sh脚本重新启动服务。
我的bash脚本如下:

#!/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 #

我已经使用Jdoodle.com来指定错误是什么,它给了我这样的输出:

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

我也尝试过使用dos2unix pkg,但没有成功。
编辑:复制了有错误的脚本

e5nqia27

e5nqia271#

因为你在其他操作系统上编辑你的文件,所以隐藏的换行符与linux不同。你可以尝试用途:dos2unix {your_file_name}转换格式。
您可以使用cat -E {your file}查看隐藏的结束字符。
通过dos2unix <SCRIPT_FILE_NAME>修复脚本行终止符。

相关问题