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:
私は次のようにスクリプトを実行します。私は、次のスクリプトを持っています。
ありがとうございました。
あなたが望むものは 'eval'か' bash -c'です。 –
evalを使用していただきありがとうございます。 – user1960170
将来のための予防措置の言葉 - このようなコマンドを組み立てるときは、あなたのスクリプトを非常にひどく混乱させる可能性があるので、使用する変数に注意を払ってください。 (例 - 'eval 'のような文は何か$ variable" ')です。 –