'bash:意外令牌附近的语法错误`do

时间:2017-09-07 14:16:46

标签: bash

我在下面创建了bash脚本,以替换工作副本的SVN URL。

我可以确认在我的Linux系统上完美运行在我的Mac OS系统上无效。我将能够提供我稍后回来的错误,但想知道是否有人可以指出我正确的方向。我相信它与WORKING_DIR变量中的空间有关,我已经尝试了在Google上发现的许多变体,包括逃避空间\添加“和”但仍然没有运气。

#!/bin/bash
filepath=$(pwd)
URL=https://192.168.22.225/svn
WORKING_DIR="/Users/user/Documents/Working Copies"
cd "${WORKING_DIR}"
for f in "${WORKING_DIR}"/*
do
        if [[ -d $f ]]; then
        (
        cd "${f##*/}"
        #printf "\n$PWD\n${URL}/${f##*/}\n"
        svn relocate "${URL}"/"${f##*/}"
        )
        fi
done
cd "$filepath"

错误:

: No such file or directoryments/Working Copies
'bash: working.sh: line 7: syntax error near unexpected token `do
'bash: working.sh: line 7: `do

1 个答案:

答案 0 :(得分:1)

这是赠品:

'bash: working.sh: line 7: syntax error near unexpected token `do
'bash: working.sh: line 7: `do

请参阅该行前面的'?这应该打印在该行的 end

将光标发送回行首的是CR字符,也称为$'\r'。因此,代替do,您有do$'\r',当shell尝试打印unexpected token `do'时,CR会将光标发送到该行的开头,因此结束{{1}在那里打印。

这是因为在DOS风格的系统中,换行符是两个字符,CRLF,而在UNIX上,它们只是CR。