【发布时间】:2016-05-27 14:52:06
【问题描述】:
我正在编写一个 bash 脚本(我是这样做的新手),它将遍历我的所有文件以使用 GIT 提交。但是,当我将命令传递给 for 循环时,出现以下错误: 致命:不明确的参数“|”:未知修订版或路径不在工作树中。 我传递给循环的命令在终端中运行良好。我有以下脚本:
我按如下方式运行脚本:BYPASS_LEGACY=yes ./check_debug_code.sh
#!/bin/bash
if [ "$BYPASS_LEGACY" == "yes" ]
then
gitCommand="git diff --cached --name-only | egrep -v'(folder1|folder2|([A-Za-z])\w+.*X)'"
else
gitCommand="git diff --cached --name-only"
fi
DEBUG_CODE_FOUND="no"
for i in "$($gitCommand)"
do
r=$(grep -nrH --color=always 'dump\|print_r\|console.log(\|var_dump(\|echo\|print(' $i)
if [ "$r" != "" ];then
echo "$r"
DEBUG_CODE_FOUND="yes"
fi
done
if [ "$DEBUG_CODE_FOUND" == "yes" ];then
echo "======================please remove the Debug to be able to commit.========================"
exit 1
fi
exit 0
任何帮助都会非常有帮助。
谢谢。
【问题讨论】:
-
你想要的是
eval或bash -c。 -
感谢它使用 eval 工作。
-
对未来的预防措施 - 在组装这样的命令时,请特别注意您使用的任何变量,因为它们可能会严重破坏您的脚本。 (例如 -
eval "git something $variable"之类的语句)。 -
请开始缩进和学习 bash 编码风格。这不好玩。
标签: git bash shell ubuntu grep