好吧,我是linux新手,我在使用简单的bash脚本时遇到了问题。
我有一个程序可以在运行时添加到日志文件中。随着时间的流逝,日志文件变得越来越大。我想创建一个启动脚本,该脚本将在每次运行之前重命名并移动日志文件,从而为程序的每次运行有效地创建单独的日志文件。到目前为止,这是我得到的:
糊盒
DATE=$(date +"%Y%m%d%H%M") mv server.log logs/$DATE.log echo program
运行时,我看到以下内容:
: command not found program
当我CD到logs目录并运行dir时,我看到以下内容:
201111211437\r.log\r
这是怎么回事?我假设我缺少一些语法问题,但似乎无法弄清楚。
更新:由于下面的Shellter评论,我发现问题是由于我正在Windows的Notepad ++中编辑.sh文件,然后通过ftp发送到服务器,然后通过ssh运行文件。在文件上运行dos2unix后,它可以工作。
新问题:如何首先正确地保存文件,以避免每次重新发送文件时都必须执行此修复程序?
您从脚本中发布的几行对我来说还不错。它可能更深一些。
您需要找到哪条线给您这个错误。添加set -xv到脚本的顶部。这将打印 出行 号和正在执行到 STDERR 的命令。这将帮助您确定在脚本中哪个位置出现此特定错误。
set -xv
顺便说一句,您的脚本顶部有一个shebang吗?当我看到这样的东西时,通常我希望它与Shebang有关。例如,如果您#! /bin/bash位于顶部,但bash解释器位于中/usr/bin/bash,则会看到此错误。
#! /bin/bash
/usr/bin/bash
两种方式: