From: SZEDER Gábor Date: Thu, 14 May 2015 21:48:30 GMT Subject: Re: [PATCH v2] mergetools: add winmerge as a builtin tool Message-ID: <1431640110-8484-1-git-send-email-szeder@ira.uka.de> In-Reply-To: <5553B61D.7050204@gmail.com> > for directory in "$(env | grep -E '^PROGRAM(FILES(\(X86\))?|W6432)=' | cut -d '=' -f 2 | sort -u)" > do > test -n "$directory" && > test -x "$directory/$winmerge_exe" && > echo "$directory/$winmerge_exe" && > break > done This ain't gonna work, because the output of the pipe won't be split because of the quotes around the command substitution, so $directory will hold everything. Simply loosing those quotes is not good either, because the output will be split on the spaces as well, leading to 'C:\Program', 'Files' and '(x86)', unless the space is already removed from IFS. IIRC Windows doesn't allow newlines in pathnames, so IFS=$'\n' and removing the quotes around the command substitution should do the trick. Pathnames can contain '=' characters, so, while I think it's outrageous, the paths in those variables can also contain an '=' or two. Well, theoretically, at least, and in that case the 'cut -d= -f2' will cut off the end of the pathname. I don't know whether this is something to be worth worrying about, but in that case it should be 'cut -d= -f2-'. G�bor