【发布时间】:2018-02-16 07:55:27
【问题描述】:
我创建了下面的 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
【问题讨论】:
-
引用你的变量。阅读:unix.stackexchange.com/q/171346/4667
-
使用shellcheck.net——它会指出未引用的变量,以及其他一些问题。在这种情况下:始终测试
cd命令以确保它们有效,否则脚本的其余部分将在错误的位置执行! -
您的脚本有 DOS 换行符。运行
dos2unix,或者在vim中打开并运行:set fileformat=unix并保存。
标签: bash