bug-bash
[Top][All Lists]
Advanced

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

Re: bash dislikes empty functions or flow control bodies


From: Alex fxmbsw7 Ratchev
Subject: Re: bash dislikes empty functions or flow control bodies
Date: Tue, 18 Jan 2022 17:24:15 +0100

what i meant to detail more is

;

where is the cmd.. synatx err, obviously

On Tue, Jan 18, 2022, 17:23 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> wrote:

> as you may see
>
> e() { ; }
>
> and sadly
>
> e() { }
>
> is simply invalid code, as the others say its by posix sh and mr bash wont
> digg it i guess
>
> On Tue, Jan 18, 2022, 12:46 <l.bashbug@scarydevilmonastery.net> wrote:
>
>> Configuration Information [Automatically generated, do not change]:
>> Machine: x86_64
>> OS: linux-gnu
>> Compiler: gcc
>> Compilation CFLAGS: -g -O2 -fstack-protector-strong -Wformat
>> -Werror=format-security -Wall
>> uname output: Linux latitude 5.15.0-2-amd64 #1 SMP Debian 5.15.5-2
>> (2021-12-18) x86_64 GNU/Linux
>> Machine Type: x86_64-pc-linux-gnu
>>
>> Bash Version: 5.1
>> Patch Level: 16
>> Release Status: release
>>
>> Description:
>> Even if descriptions of situations where this problem occurs may sound
>> contrived, those situation exist and require me to catch this problem
>> with additional code:
>>    a: defining an empty function will throw a syntax error
>>    b: defining an empty bodies flow control construct will thow a syntax
>> error
>>
>> While it may be debatable whether such construct could serve any purpose
>> (they actually can), perceived lack of purpose doesn't qualify them as
>> syntactically wrong. They aren't. Would they be syntactically wrong,
>> the syntax error would continue to exist after adding a harmless
>> "no operation" equivalent.
>>
>> You may justifiable ask "so why not simply use the workaround by adding
>> a no operation equivalent" - answer is that it may not be me in person
>> creating a function or a flow control construct - the script may do too,
>> in accordance with input it received (this is the mentioned part where the
>> description may sound contrived, but isn't). Therefore I must protect the
>> script at this point from generating empty functions or flow control
>> constructs.
>>
>> You may have guessed here that this is going towards some sort of meta
>> programming, and a fuller view of the reason for reporting the bug can be
>> obtained at https://github.com/Bushmills/yoda, specifically
>> at https://github.com/Bushmills/yoda/issues/7
>> Measures to circumvent the problem can be found in file
>> https://github.com/Bushmills/yoda/blob/main/yoda at around line 1900
>> (at this time) on those lines with text "empty function" in the
>> description
>>
>>
>> Repeat-By:
>>         bar() { ; }
>>         foo() { if true; then ; fi; }
>>         foo() { while :; do ; done; }
>>
>> Fix:
>> In cases where this problem arises, I tend to synthesise the closest
>> approximation of a "no operation" I know about, which is ":":
>>         bar() { :; }
>>         foo() { if true; then :; fi; }
>>         foo() { while :; do :; done; }
>>
>>
>>
>>
>>


reply via email to

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