thank you to enlighten me on that. I just learned another thing today. ;-) 2014-12-08 18:39 GMT+01:00 Eric Blake <eblake@xxxxxxxxxx>: > On 12/08/2014 10:32 AM, solsTiCe d'Hiver wrote: >> hello, >> folowing that bug >> https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/1400357, >> I follow through to investigate and I found out >> that whatever I try, when comparing 2 strings I always end up with a >> file written to disk >> >>>From the man page >> test expression >> [ expression ] >> [...] >> s1 > s2 True if string s1 comes after s2 based on the ASCII >> value of their characters. > > You HAVE to escape the > so that it is interpreted as an argument and > not a redirection operator. The bug is not in dash, but in your usage. > >> >> when I try to use it: >> a="ert" >> b="aze" >> if [ $a > $b ] ; then > > Wrong. Use: > > if [ "$a" ">" "$b" ]; then > > >> >> so this "if syntax" is broken or I don't knwo how to use it. > > The latter. > >> >> Also it is really dangerous to use a syntax similar to file >> redirection and this is exactly what is happening here. > > POSIX is proposing the addition of the shell builtin [[ ]], where > because it is a syntactical part of the shell, it would have safe > semantics (that is, [[ $a > $b ]] would be perfectly safe and do the > right thing). But until the POSIX standardization is complete, dash does > not implement [[; and as long as only '[' is portable (with its > unfortunate but historically-mandated semantics of operating as if it > were NOT a builtin, in that shell parsing happens before test sees its > arguments), then you have to quote anything that might otherwise be > misinterpreted during parsing. > > -- > Eric Blake eblake redhat com +1-919-301-3266 > Libvirt virtualization library http://libvirt.org > -- To unsubscribe from this list: send the line "unsubscribe dash" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html