From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 4084 invoked from network); 13 Nov 2022 08:15:12 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 13 Nov 2022 08:15:12 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1668327312; b=CENajFfO/uJ7aOxMJHOhEZFOCi1+Lzbs+Ct87sBFpYwZZXWsyxHPPiCyDjB8g7R340SDxcWSpV rOLKkSpvbd1Wz3Rlc9e9qTxVYLxIeeXN1E7Lygcsbl4aJPTuRjtiG/KZ5L2lokcMOeG/ysvE66 MKBnnxC5hHp/TJdHspTwiLR86CkygXVEzZLdQbEZbDnFvnsri1XWyv1On5PUl+SrjhxLlWPe4h I9eAkUB8xXE30G9e5Not5D2FRiA9wMQC/Y2yqzVDwkg98Yf0HMH+qI029dv1o2oAY1dLNNa+X/ WUU1kyFClCVzip6r7gzbjwBmg6pdieNKbSfN+aSTJ3DnQQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (relay4-d.mail.gandi.net) smtp.remote-ip=217.70.183.196; dmarc=none header.from=chazelas.org; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1668327312; bh=Zuj2PSj0FCh7KUUiOzSA6d3Ke3vlMAkuVLXB/UUJIuE=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:Content-Type:MIME-Version: Message-ID:Subject:To:From:Date:DKIM-Signature; b=mo99Vah3pHs/ko7DxRb9GuvLICQwnlpv7sF8+vezWnYsp1/rwmA++ojaRlPYAs9Haxq1M5dVG8 +0Vq6BAAhl3N9TkDXKkrfX4/R5x+qQe8esmxQUpcggtv+GKFE29E5nr+X2OCt5NhaYWVhr2eRV wIZekrro5SFdvsBv4YrFmfqvjADSyoTV+qwVHNZQ4+nzSlhm/getS3v/45PxnpZBfOnGjZ/6fn iyhmP89O836gY1wZeJZrMTjFOzm8FYGakixY9IEc9d+gv2nztE7C9w60vM5RRJ2N/zIw8WWbP9 vjqDYPjCssyuXnIpozGzptNUmCS2zbsxyDniaalyldkqLA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Message-ID:Subject:To:From:Date:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References; bh=SGa/xITxOGwFF+KNGO4VJosbm0tY7bO/9sa64j9TeE0=; b=jo8psVEeQ+JVbmF4G6ZiZQtuX8 8MokJsmRDK69qm5LKpug36pbe5MTR0R/EE8Z7e2FFaaBT8JKEmXQBoDjzovMob3KMMuZ34eHS7x0A WjA5u9lO5X7LuSE/9nX5D9aBSekPCmKptGPeWK/Hk5/m3PnxKXyQpGs2NUaOue85ydgMOxiPArcB+ j7xAQ4bG7PZP65lMCiVViYhkdK/WMousiSHIQxKfj+rEcfWzfHQLBYgSTc3LvJLmhAyWTDIr/4iFH xynGOQvSFubsoz3y5N4QcMlSbdLHm5yQpCnMlJuMeztA7HE+J5qYew0CxBoTE6BoTZGKlgFtgy3ln 0cKBBg3g==; Received: by zero.zsh.org with local id 1ou891-000MxC-Nz; Sun, 13 Nov 2022 08:15:11 +0000 Authentication-Results: zsh.org; iprev=pass (relay4-d.mail.gandi.net) smtp.remote-ip=217.70.183.196; dmarc=none header.from=chazelas.org; arc=none Received: from relay4-d.mail.gandi.net ([217.70.183.196]:57793) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1ou88k-000MdK-AQ; Sun, 13 Nov 2022 08:14:55 +0000 Received: (Authenticated sender: stephane@chazelas.org) by mail.gandi.net (Postfix) with ESMTPSA id 59CF9E0006 for ; Sun, 13 Nov 2022 08:14:53 +0000 (UTC) Date: Sun, 13 Nov 2022 08:14:52 +0000 From: Stephane Chazelas To: Zsh hackers list Subject: [bug] $scalar[(pws[\0])1] or =?utf-8?B?JHNjYWxhclsocHdzW8OhXSkx?= =?utf-8?Q?=5D?= doesn't work Message-ID: <20221113081452.bk7zdnbc6qvqjxef@chazelas.org> Mail-Followup-To: Zsh hackers list MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit X-Seq: 50950 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: From: https://unix.stackexchange.com/questions/724638/subscripted-variable-expansion-on-nul-delimited-words-in-zsh Note that we're talking of the s[separator] *array subscript* flag combined with w and p, not the s[separator] parameter expansion flag here. $ a=$'foo\0bar' $ echo $a[(pws[\0])1] f Expected "foo". It seems that's some missing metafication as confirmed by: $ echo á | hd 00000000 c3 a1 0a |...| 00000003 (0xa1 needing metafication as well) $ a=fooábar $ echo $a[(pws[á])1] fooábar $ a=fooébar $ echo $a[(pws[é])1] foo $ n=$'\x83\x20' # a metafied NUL $ a=$'foo\0bar' $ eval "echo \$a[(pws[$n])1]" foo Also note the doc says about the "w" subscript flag: > w > If the parameter subscripted is a scalar then this flag makes > subscripting work on words instead of characters. The default word > separator is whitespace.[...] I find that's not true. By default it seems to split on $IFS characters (which by default does include space, tab and newline but also NUL). Also I find empty elements are always discarded even if $IFS-splitting with non-whitespace characters: $ a=::foo:bar $ echo $a[(ws[:])1] foo $ IFS=: $ echo $a[(w)1] foo Also, it would be nice if one could do $a[(pws[$var])1] to align with ${(ps[$var])var} -- Stephane