Re: [PATCH 10/20] git-submodule.sh: avoid "test <cond> -a/-o <cond>"
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Jun 10, 2014, 08:19 UTC
- Message-ID
- <5396BFAA.3000003@viscovery.net>
- In-Reply-To
- <5396AB10.8020603@viscovery.net>
Am 6/10/2014 8:52, schrieb Johannes Sixt:
Show 37 quoted lines
> Am 6/10/2014 1:23, schrieb Junio C Hamano:
>> Elia Pinto <gitter.spiros@gmail.com> writes:
>>
>>> @@ -1059,13 +1059,17 @@ cmd_summary() {
>>> while read mod_src mod_dst sha1_src sha1_dst status sm_path
>>> do
>>> # Always show modules deleted or type-changed (blob<->module)
>>> - test $status = D -o $status = T && echo "$sm_path" && continue
>>> + case "$status" in
>>> + [DT])
>>> + printf '%s\n' "$sm_path" &&
>>> + continue
>>> + esac
>>
>> I think this conversion is wrong and causes parse error. The
>> surrounding code cannot be seen in the context of thsi patch, but
>> looks somewhat like this:
>>
>> modules=$( ....
>> case "$status" in
>> [DT])
>> ...
>> esac
>> .... )
>>
>> Perhaps you would need to spell it with the extra opening
>> parenthesis, like so:
>>
>> case string in
>> ([DT])
>> ...
>> esac
>>
>> or something.
>
> Do you just think that it causes parse errors or did you actually observe
> them? Because I think that no parse error should occur.(I should not talk, but test...) bash and zsh get it wrong, dash and ksh get it right. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03 item 5 does leave some leeway for interpretation. So it's better to adjust as you suggest.
-- Hannes
-- "Atomic objects are neither active nor radioactive." -- Programming Languages -- C++, Final Committee Draft (Doc.N3092)