我正在尝试做一个 for 循环,但是 Cygwin 不理解其{$var}
语法。
我的命令:
for f in 'svn ls repo_path'; path/{$f}trunk/path; done
Error svn: E170000: URL path/%7Bvar%7Dtrunk/path doesn't exist
该字符串应如下所示:path/var/trunk/path
我怎样才能使变量+字符串连接起作用?
答案1
语法是${f}
,不是{$f}
。
如果你真的想要path/var/trunk/path
,你可以简单地使用path/$f/trunk/path
。无论$f
是否以斜线结尾,这都可以工作。Bash 不介意双斜线。
另外,要小心解析 ls 的输出。
实际上,现在我遇到了这个问题: for f in 'svn ls repo_path'; path/${f}trunk/path; done
输出为:path/var/%0Dtrunk/path
%0D
是回车符。Windows 中的换行符是\r\n
,而不是预期的\n
。
尝试设置
IFS=$' \t\r\n'
在 for 循环之前。