Linux 意外标记“附近出现语法错误”;“做”;

Linux 意外标记“附近出现语法错误”;“做”;,linux,shell,loops,sh,Linux,Shell,Loops,Sh,此shell脚本正在抛出错误消息: 意外标记do附近出现语法错误 这是我的密码 #!/bin/bash DIRS="/home/delhi_qa/mkv/18000/marketview/log/FIFO_OPTIMISER/LOGS 1" DEST="home/delhi_qa/Tests/Ankit/TTLOGSBACKUP" DELETE_OLD_ZIP_FILES="no" BASENAME=/usr/bin/basename ZIP=/usr/bin/zip for i in $D

此shell脚本正在抛出错误消息:

意外标记do附近出现语法错误

这是我的密码

#!/bin/bash
DIRS="/home/delhi_qa/mkv/18000/marketview/log/FIFO_OPTIMISER/LOGS 1"
DEST="home/delhi_qa/Tests/Ankit/TTLOGSBACKUP"
DELETE_OLD_ZIP_FILES="no" 
BASENAME=/usr/bin/basename 
ZIP=/usr/bin/zip
for i in $DIRS
do
    #On running this unexpected token message occurred at this line#
    zipfile="${DEST}/$(${BASENAME} ${d}).zip"
    echo -n "Creating $zipfile..."
    if [ "$DELETE_OLD_ZIP_FILES" == "yes" ]
    then
        [ -f $zipfile ] && /bin/rm -f $zipfile 
    fi
    ${ZIP} -r $zipfile $d &>/dev/null && echo "Done!"
done
你能告诉我为什么吗?

使用: DIRS=“/home/drish_qa/mkv/18000/marketview/log/FIFO_optimizer/LOGS\1”

在日志之后检查其他“\”,因为如果不使用“\”,linux将不考虑空间。这可能是导致错误的原因。要确认其正常工作,您也可以使用不同的文件夹名称进行检查,例如LOG_1


您的输入文件包含回车符。使用dos2unix之类的东西 与摆脱这些类似德夫努尔

德夫努尔是正确的。问题的错误修订版3通过扭曲之前阅读的错误消息隐藏了这一点 syntax error near unexpected token `do
追加撇号出现在行首,覆盖了命令
/do
的第一个字符。这只能由以下回车引起:
do

将example.sh文件转换为unix的简单方法是使用NotePad++(编辑>EOL转换>unix/OSX格式)

您还可以在记事本++中设置默认的EOL(设置>首选项>新建文档/默认目录>在格式框下选择Unix/OSX)

参考-

它还解决了这个问题:

我用了这个。它更早地解决了我的问题


devnull和Armali已经指出了这个问题。希望详细信息对您有所帮助。

您的输入文件包含回车。使用
dos2unix
或类似的方法来摆脱它们。另外,
$d
$i
不同。
'/do: line 8: syntax error near unexpected token `do