2016-05-27 6 views
0

私はGITを使用してコミットするすべてのファイルをループするbashスクリプトを作成しています。しかし、forループにコマンドを渡すと、次のエラーが発生します。 fatal:あいまいな引数 '|':未知のリビジョンまたはパスが作業ツリーにありません。 ループに渡しているコマンドが端末で正常に動作しています。すべてのヘルプは非常に参考になりますbashスクリプトのforループにコマンドとして文字列を渡す方法

#!/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 

./check_debug_code.shはい= BYPASS_LEGACY:

私は次のようにスクリプトを実行します。私は、次のスクリプトを持っています。

ありがとうございました。

+1

あなたが望むものは 'eval'か' bash -c'です。 –

+1

evalを使用していただきありがとうございます。 – user1960170

+0

将来のための予防措置の言葉 - このようなコマンドを組み立てるときは、あなたのスクリプトを非常にひどく混乱させる可能性があるので、使用する変数に注意を払ってください。 (例 - 'eval 'のような文は何か$ variable" ')です。 –

答えて

0

希望するものはevalまたはbash -cです。 - rr

関連する問題