git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC] shell: local x=$1 may need to quote the RHS

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 25, 2022, 19:00 UTC
Message-ID
<xmqqa6fjzlm0.fsf@gitster.g>
In-Reply-To
<20220125092419.cgtfw32nk2niazfk@carbon>
Konstantin Khomoutov <kostix@bswap.ru> writes:
Show 6 quoted lines
> Sorry, I might have not followed the entire thread, but assignment in
> `local` is a bashism, and dash can only handle the declaration part with
> `local`, not assignment; hence the safe code should read
>
>   local x
>   x="$1"

Interesting. As "local" is not in POSIX but we still use it for convenience, we must limit our use to a reasonable subset of features common to the shells we care about. Knowing what each shell can and cannot do safely is essential to us.

The patch posted seemed to run fine with a more recent dash than what I had trouble with (0.5.10 would work fine with "$1" quoted, 0.5.11 would work fine without $1, just like the RHS of a regular assignment). In addition, there are many existing tests that already use "local var=initial-value" (the message you are responding to has an output from "grep") and we haven't got problem reports from dash users about them.

The manual page for recent dash may need an update. Can you perhaps file a bug on their documentation?

Thanks.
Previous: Konstantin KhomoutovNext: Taylor Blau
Message 3 of 9 in “[RFC] shell: local x=$1 may need to quote the RHS”
  1. Junio C HamanoJan 24, 2022
  2. Konstantin KhomoutovJan 25, 2022
  3. Junio C HamanoJan 25, 2022
  4. Taylor BlauJan 25, 2022
  5. Junio C HamanoJan 26, 2022
  6. Konstantin KhomoutovJan 26, 2022
  7. SZEDER GáborJan 26, 2022
  8. Taylor BlauJan 26, 2022
  9. Junio C HamanoJan 27, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.