Sujet : Re: What does @{FOOBAR@a} mean? (bash)
De : lew.pitcher (at) *nospam* digitalfreehold.ca (Lew Pitcher)
Groupes : comp.unix.shellDate : 13. Apr 2024, 23:14:27
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <uvf043$33fov$1@dont-email.me>
References : 1
User-Agent : Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2)
On Sat, 13 Apr 2024 20:35:27 +0000, Kenny McCormack wrote:
Observe:
$ unset FOOBAR
$ echo ${FOOBAR@a}
$ FOOBAR=
$ echo ${FOOBAR@a}
$ export FOOBAR
$ echo ${FOOBAR@a}
x
$
It seems that it prints "x" iff the variable has been exported.
This works with any variable - the output is always "x" (iff it is exported).
I can find no mention of this feature in "man bash".
[snip]
What is going on?
${
parameter@operator}
Parameter transformation. The expansion is either a
transformation of the value of parameter or information
about parameter itself, depending on the value of
operator. Each operator is a single letter:
U The expansion is a string that is the value of
parameter with lowercase alphabetic characters
converted to uppercase.
u The expansion is a string that is the value of
parameter with the first character converted to
uppercase, if it is alphabetic.
L The expansion is a string that is the value of
parameter with uppercase alphabetic characters
converted to lowercase.
Q The expansion is a string that is the value of
parameter quoted in a format that can be reused as
input.
E The expansion is a string that is the value of
parameter with backslash escape sequences expanded
as with the $'...' quoting mechanism.
P The expansion is a string that is the result of
expanding the value of parameter as if it were a
prompt string (see PROMPTING below).
A The expansion is a string in the form of an
assignment statement or declare command that, if
evaluated, will recreate parameter with its
attributes and value.
K Produces a possibly-quoted version of the value of
parameter, except that it prints the values of
indexed and associative arrays as a sequence of
quoted key-value pairs (see Arrays above).
a The expansion is a string consisting of flag values
representing parameter's attributes.
k Like the K transformation, but expands the keys and
values of indexed and associative arrays to
separate words after word splitting.
I don't know when it was introduced into bash. My version of bash
(GNU bash, version 4.3.48(1)-release (x86_64-slackware-linux-gnu) )
doesn't support it.
-- Lew Pitcher"In Skills We Trust"