{$var} 括号中的 Bash 变量读为 %7Bvar%7D?

{$var} 括号中的 Bash 变量读为 %7Bvar%7D?

我正在尝试做一个 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 循环之前。

相关内容