I am trying to export several commits (those that contain a specific ticket number 1234 in the commit message) to patch files.

*EDIT* The working script is on <https://github.com/amenk/SelfScripts/blob/master/git-extract-patches>

This is what I have 

```
#!/bin/bash -x
commits=`git log --pretty=oneline | grep "#1234" | cut -f1 -d" "`
no=1;
for COMMIT in $commits
do
    git format-patch -1 $COMMIT --start-number=$no
    no=$(($no+1))
done

```

But for some reason executing of git format-patch fails:

```
$ ./getpatches.sh 
++ git log --pretty=oneline
++ grep '#6809'
++ cut -f1 '-d '
+ commits='da591d66f05513488ee06857edc9d24a046c179d
4fd781da9cc503b961f8e4c42bbb136d9e3c1806
3a9311f5507f91f830b44673c57f672e7aabaac0'
+ no=1
+ for COMMIT in '$commits'
+ git format-patch -1 'da591d66f05513488ee06857edc9d24a046c179d' --start-number=1
fatal: ambiguous argument 'da591d66f05513488ee06857edc9d24a046c179d': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

```

When I call `git format-patch -1 'da591d66f05513488ee06857edc9d24a046c179d' --start-number=1` manually, everything is fine.

*EDIT:*

I think it is something with the quotes. If I add a `git log | grep $COMMIT` into the loop, I get the following error:

```
+ grep '992ab41d3539539bd609209beed33a9de2f4277a'
grep: Unmatched [ or [^

```

Another interseting effect is, if I hard-code `grep '992ab41d3539539bd609209beed33a9de2f4277a'` in the for loop, the command output (because of the `-x` option for `bash` is without the quotes and it works.

```
 + grep 992ab41d3539539bd609209beed33a9de2f4277a

```

Where are these quotes coming from and how do I get rid of them?