此shell脚本抛出错误消息:
意外令牌附近的语法错误
这是我的代码
#!/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
你能告诉我为什么吗?
答案 0 :(得分:1)
将example.sh文件转换为unix的简便方法是使用NotePad ++(编辑> EOL转换> UNIX / OSX格式)
您还可以在记事本++中设置默认EOL(设置>偏好设置>新文档/默认目录>在格式框下选择Unix / OSX)
参考 - syntax error near unexpected token `$'in\r''
它也解决了这个问题:android_build.sh gives error while building ffmpeg library
我用过这个。它早些解决了我的问题。
devnull和Armali已经指出了这个问题。希望细节能为您提供帮助。答案 1 :(得分:0)
使用: DIRS =“/ home / delhi_qa / mkv / 18000 / marketview / log / FIFO_OPTIMISER / LOGS \ 1”
在LOGS之后检查其他'\',因为如果不使用'\',linux将不会占用空间。可能是导致错误的那个。要确认其正常工作,您还可以检查是否存在不同的文件夹名称,例如LOG_1。
答案 2 :(得分:0)
您的输入文件包含回车符。使用dos2unix或其他东西 类似于摆脱那些。 - devnull
devnull是现货。问题的错误修订3通过扭曲错误消息隐藏了这一点,之前已经读过
syntax error near unexpected token `do- 注意单独的严重重音(`),
bash
在令牌名称的开头使用在消息中与最后的撇号(')一起引用令牌。
确切的错误消息必须是e。 G。对于名为./do
'/do: line 8: syntax error near unexpected token `do
附加撇号出现在行的开头,覆盖了命令./do
的第一个字符。这只能由do
之后的回车引起。