bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Print non-readonly variables with declare +r -p


From: Dan Douglas
Subject: Re: Print non-readonly variables with declare +r -p
Date: Tue, 13 Dec 2011 14:13:44 -0600
User-agent: KMail/4.7.3 (Linux/3.1.4-pf+; KDE/4.7.3; x86_64; ; )

On Tuesday, December 13, 2011 12:14:41 PM lhunath@mbillemo.lin-k.net wrote:
> Configuration Information [Automatically generated, do not change]:
> Machine: i386
> OS: darwin11.2.0
> Compiler: /Developer/usr/bin/clang
> Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='i386'
> -DCONF_OSTYPE='darwin11.2.0' -DCONF_MACHTYPE='i386-apple-darwin11.2.0'
> -DCONF_VENDOR='apple' -DLOCALEDIR='/opt/local/share/locale'
> -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -DMACOSX   -I.  -I. -I./include
> -I./lib  -I/opt/local/include -pipe -O2 -arch x86_64 uname output: Darwin
> mbillemo.lin-k.net 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug  9 20:54:00
> PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64 Machine Type:
> i386-apple-darwin11.2.0
> 
> Bash Version: 4.2
> Patch Level: 10
> Release Status: release
> 
> Description:
>       The description of declare states that using + instead of - in front of 
> an
> attribute turns it off.  From that, I would expect (and find useful) to be
> able to display (-p) all non-read-only variables using declare +r -p, just
> like I can display all readonly variables using declare -r -p
> 
> Repeat-By:
>       declare +r -p
> 
> Fix:
>     Show all variables that do not have the given attribute(s) when included
> in the declare command prefixed with a +.

Would this be consistent with anything else? AFAIK the only option for 
filtering results is -f and -F unless no additional "names" are given. "declare 
+l -p" for example doesn't appear to select only non -l attribute names 
either.

ksh93 appears mostly consistent with this and prints matches regardless of + 
or -.

I imagine this is ok because Bash's declare -p is intended to be human-
readable only, whereas Ksh guarantees -p produces output in a format reusable 
as input.

$ ( typeset -r x=0; typeset y=1; typeset -p x y )
typeset -r x=0
y=1
$ ( typeset -r x=0; typeset y=1; typeset -r -p x y )
typeset -r x=0
y=1
$ ( typeset -r x=0; typeset y=1; typeset +r -p x y )
typeset -r x
y
$ ( typeset -r x=0; typeset y=1; typeset +r )       
x
$ ( typeset -r x=0; typeset y=1; typeset -r )
x=0

And it has the additional behavior that +p omits values. Bash doesn't do this.

Attachment: signature.asc
Description: This is a digitally signed message part.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]