【发布时间】:2016-06-29 16:49:42
【问题描述】:
这可能是一个愚蠢的错误。我正在使用this as a basis for a bash function 尝试为this git function 创建一个bash 脚本:
branch() {
if [[ $@ == "-r" ]]; then
command for k in `git branch -r | perl -pe 's/^..(.*?)( ->.*)?$/\1/'`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
else
command for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
fi
}
当我尝试获取它时,它实际上是在尝试执行命令 - 然后因此给出语法错误。
我能够在本地执行命令,所以很明显我在这里创建函数时遗漏了一些明显的东西。
【问题讨论】:
-
在 else 子句中,git 命令前面的单引号应该是反引号:
k in 'git变为k in `git。 -
@bishop 更改会产生相同的结果。
-
command的用法为command [-pVv] command [arg ...]。这不是for循环给你的。你想多次运行一个命令吗?如果是这样,请将command放在for内。作为建议,删除“命令”,看看会发生什么。 -
@glennjackman 我公然复制,错误,借用另一个 SO 答案中的脚本作为此的基础:-)