Re: `declare -f' does not output the "function" keyword when required

2022-12-05 Thread Chet Ramey

On 12/3/22 6:05 AM, Emanuele Torre wrote:

In Bash, it is possible to define functions that look like assignment
words using the function keyword:

 function a=2 { printf hi\\n ;}

When `declare -f' is used to output all the function definitions, bash
will not output that function definition with the "function" keyword,
generating invalid code:


Thanks for the report.

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRUc...@case.eduhttp://tiswww.cwru.edu/~chet/




`declare -f' does not output the "function" keyword when required

2022-12-03 Thread Emanuele Torre
In Bash, it is possible to define functions that look like assignment
words using the function keyword:

function a=2 { printf hi\\n ;}

When `declare -f' is used to output all the function definitions, bash
will not output that function definition with the "function" keyword,
generating invalid code:

$ bash -c 'function a=2 { printf hi\\n ;}; declare -f'
a=2 () 
{ 
printf hi\\n
}
$ bash -c 'function a=2 { printf hi\\n ;}; declare -f' | bash -v
a=2 () 
bash: line 1: syntax error near unexpected token `('
bash: line 1: `a=2 () '

Bash should either accept `a=2 () { printf hi\\n ;}' as a valid
definition like it accepts `function a=2 { printf hi\\n ;}' as valid, or
make `declare -f' output declarations that use the "function" keyword,
at least when necessary.

 emanuele6