for loop in prompt with git command : -bash: syntax error near unexpected token `do'

for loop in prompt with git command : -bash: syntax error near unexpected token `do'

我退出 bash 并尝试执行 for 循环以查找我的 git 目录中所有未转换为 svn 的标签。

我已经运行执行了以下命令:

echo < for t in $(git for-each-ref --format='%(refname:short)' refs/remotes/tags); do git tag ${t/tags\//} $t && git branch -D -r $t done

但是,我遇到了这个错误:

-bash: syntax error near unexpected token `&&'

我尝试了几件事,比如移动分号,但它总是出现相同的错误,但使用不同的字符,如 &&,完成,或者我有以下错误:

-bash: for: No such file or directory

因为这些是 unix 命令,我在 windows 上使用 cygwin。

有什么想法

ps: 我正在关注这个教程:https://www.gitkraken.com/blog/migrating-git-svn! 谢谢你的帮助:)

首先,您在 done 之前缺少一个 ;

其次,你不能做 echo < for t in...,如果你想 运行,删除 echo <

如果不这样做,您将得到不明确的重定向。

< 是输入重定向。正确的是,需要一个文件名(或一个过程规范,然后必须将其括在括号中)。在您的情况下,您在 < 的右侧写下单词 for 并要求 bash 使用名为 for 的文件替换标准输入。

此外,无论如何,输入重定向对 echo 没有意义,因为 echo 不处理标准输入。你可以写一个

echo <abc

如果你想要,但是bash只会检查文件abc是否存在并设置重定向,而echo会默默地忽略它,所以没有任何目的在这样做时。