[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: echo builtin doesn't handle end-of-options flag
From: |
Eli Schwartz |
Subject: |
Re: echo builtin doesn't handle end-of-options flag |
Date: |
Sun, 16 Aug 2020 12:26:06 -0400 |
On 8/16/20 12:21 PM, Eric Blake wrote:
> On 8/16/20 10:47 AM, Todd A. Jacobs wrote:
>
>> Description:
>> The echo builtin accepts options, but does not seem to handle
>> `--` correctly as the end of options.
>
> The correct behavior for echo is described here:
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
> "The echo utility shall not recognize the "--" argument in the manner
> specified by Guideline 10 of XBD Utility Syntax Guidelines; "--" shall
> be recognized as a string operand."
>
>> The expected behavior
>> would be for -- to be removed, and any following flag-like
>> substrings printed as-is.
>
> Your expectations are wrong, they contradict what POSIX says.
>
>>
>> Repeat-By:
>> echo "-n" # "" but expecting "-n"
>
> POSIX says this one is implementation-defined; so whether -n is treated
> as an option or as a string to echo has to be documented by the
> implementation (bash documents treating it as an option).
Err...
"Implementations shall not support any options."
>> echo -- -n foo # -- -n foo
>
> POSIX says this has to output '-- -n foo' and a newline. -n wasn't
> first, so you no longer have the implementation-defined behavior, but
> well-defined.
>
>> echo -- "-n foo" # -- -n foo
>
> Also well-defined.
>
> I see nothing in your report about bash disobeying POSIX, but rather
> confusion on your part about what POSIX actually requires.
bash does disobey POSIX, but not in the manner which the report specifies.
--
Eli Schwartz
Arch Linux Bug Wrangler and Trusted User
signature.asc
Description: OpenPGP digital signature