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
会默默地忽略它,所以没有任何目的在这样做时。
我退出 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
会默默地忽略它,所以没有任何目的在这样做时。