Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
test is not posix
- X-seq: zsh-workers 37709
- From: Trek <trek00@xxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: test is not posix
- Date: Wed, 20 Jan 2016 22:06:14 +0100
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=inbox.ru; s=mail; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Subject:To:From:Date; bh=a52cN7ZzdShKVTUmyBXrJsQFd1x3apqnZ9DW7F9/kQ4=; b=SS0vXAmUrlH10ieOP6fLjzK/6nfdqpKHbMNgpFIigQ2YM1sYNXq3MkVuvL8iALdyvgpug/+3O3QhiD9BiyOHKa0F/eUnhFmUTdl9Y3ZfvzhmLClklS9MwdYE5vnvOMtMwBWn24kvh++ObDGxiXDBu3ZtAOEIDkW3TRYfE0TJR0U=;
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
the -n and -z options of the test utility are not posixly correct if the
argument is "!", "(", ")" or "-a"
with a posix shell:
$ sh -c 'test -n "!" && echo ok'
ok
with zsh called as sh:
$ zsh/sh -c 'test -n "!" && echo ok'
zsh:test:1: too many arguments
a workaround exist:
$ zsh/sh -c 'test "X!" != "X" && echo ok'
ok
but the posix standard requires -n and -z to be safe even if the
argument is '!' or '(':
The two commands: test "$1" and test ! "$1" could not be used reliably
on some historical systems. Unexpected results would occur if such a
string expression were used and $1 expanded to '!', '(', or a known
unary primary. Better constructs are: test -n "$1" and test -z "$1"
respectively.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_16
I discovered this bug developing a small shell library, where you can
find an use case in the n_str_set function of the lib/str.sh file
included in http://www.trek.eu.org/devel/naive/naive-0.0.2.tar.gz
c-ya!
Messages sorted by:
Reverse Date,
Date,
Thread,
Author