[x3d-public] Bash function to catch return value
John Carlson
yottzumm at gmail.com
Sat Jul 22 19:53:07 PDT 2023
Probably the pseudo-function (preprocessor symbol) name “try” would be
better than “catcher.”
Hmm
Also you mentioned a function like:
exit_on_failure($?, “reason”) # not sure of syntax
Is nice and clean as well.
Then it’s up to the script writer to write any messages to a log, or send
stderr to the script caller.
Possibly also writing out exit status might be helpful, if non-zero.
What I’m running into is problems like bc and unzip being unavailable on
some systems. I can install unzip on cygwin i think, but installing stuff
like bc on Git for Windows seems troublesome, and I may bite the bullet
and install msys2.
John
On Sat, Jul 22, 2023 at 9:22 PM John Carlson <yottzumm at gmail.com> wrote:
> Thanks Leonard, i was hoping to use a function because i have a whole list
> of pipelines to run in my script.
>
> Something like:
>
> catcher “oops” (sed ‘s/ //‘ | tr “\n” “ “ | ….)
> catcher…
>
> I don’t want a script for catcher. If a function won’t suffice, a
> preprocessor will.
>
> You probably want 2>> instead of 2> but I’m willing to hear your reasoning.
>
> Thanks for your help!
>
> On Sat, Jul 22, 2023 at 9:01 PM Leonard Daly <Leonard.Daly at realism.com>
> wrote:
>
>> Not sure why you would want a script as this is almost always done
>> in-line.
>>
>> $? contains the exit status. 0 is almost always success (I don't know
>> where it is not) and != 0 is failure. Error message is written to STDERR
>> unless you direct a command to fail silently.
>>
>> So something like
>>
>> (A | B | C ...) 2> /tmp/pipe-$$.err
>> if [ $? -ne 0 ]
>> then
>> exitCode=$?
>> cat /tmp/pipe-$$.err
>> exit $exitCode
>> fi
>>
>> Passing the piped command to a function can be dangerous/difficult
>> because of shell interpolation and quoting. Also note that the piped output
>> (STDOUT) is printed on the default (at the time of the pipe) output
>> (probably console), and pipe-$$.err is never cleaned up (deleted). That is
>> not really bad because most systems delete files after 24-48 hours in /tmp.
>> If there are no errors, then /tmp/pipe-$$.err is never created.
>>
>> Additional useful info:
>> https://unix.stackexchange.com/questions/164482/pipe-redirect-a-group-of-commands
>>
>> Leonard Daly
>>
>>
>>
>> On 7/21/2023 10:15 PM, John Carlson wrote:
>>
>> Linux folks:
>>
>> Does anyone have a bash function (not a separate script) to check the
>> exit status of the passed in pipeline or passed in exit status, print out
>> the passed in error message, and exit the script if the exit status
>> indicates failure?
>>
>> Thanks!
>>
>> Should be fairly easy to write?
>>
>> John
>>
>> _______________________________________________
>> x3d-public mailing listx3d-public at web3d.orghttp://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>> --
>> *Leonard Daly*
>> 3D Systems Engineering
>> President, Daly Realism - *Creating the Future*
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230722/b7da75f5/attachment.html>
More information about the x3d-public
mailing list