我想运行以下命令(取自here):
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done
我必须从Windows命令提示符处运行此命令,但不确定如何使用多行传递它。我尝试将所有内容作为一个命令传递,例如:
bash -c "git for-each-ref ... while read ref.... done
使用多个参数:
bash -c "git for-for-each..." "cut -d..." "while read ref"
如何将多行内容传递给bash?
谢谢
答案 0 :(得分:0)
最简单的操作(在解析此命令时无需介入每个换行符的作用)是将换行符作为参数的一部分简单地传递:
bash -c 'git for-each-ref --format="%(refname)" refs/heads/tags |
cut -d / -f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done
'
也就是说,唯一的“重要”换行符是do
关键字之前的换行符,也可以用分号代替。
bash -c 'git for-each-ref --format="%(refname)" refs/heads/tags | cut -d / -f 4 | while read ref; do git tag "$ref" "refs/heads/tags/$ref"; git branch -D "tags/$ref"; done'
(滚动以查看整个命令。请注意,在多行版本中,最初的两个分号是可选的,但在单行版本中是必需的,以便在循环体中终止每个命令。)
但是,仅循环本身需要由bash
的新实例执行;您也可以写类似
git for-each-ref --format="%(refname)" refs/heads/tags |
cut -d / -f 4 |
bash -c 'while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done
'