bug-bash
[Top][All Lists]
Advanced

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

I have a bash style question. Feedback request.


From: Steven W. Orr
Subject: I have a bash style question. Feedback request.
Date: Fri, 20 Apr 2012 10:38:24 -0400
User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20

I manage a hefty collection of bash scripts. Sometimes, I make heavy use of pushd and popd. When problems come up, the directory stack can make debugging more complicated than I'd like. One thing I did to get better control over things was to write a dstack module that provides pushd and popd functions.

The dstack module gives me simple flags that I can set through an environment variable that allow me to dump the stack either before or after a pushd or a popd, and to control their stdout and stderr. The default is that they both redirect to /dev/null and that all calls are checked when they return. e.g.
push somewhere || die 'Failed to pushd to somewhere'

(I hope people are still reading...)

Recently I discovered context managers in python and I had already implemented a directory stack module there. I added a context manager so that instead of saying

ds.pushd(foo)
do_a_bunch_of_stuff
ds.popd()

I can now say

with ds(foo):
    do_a_bunch_of_stuff
# The popd is now automatic.

Back to bash, I see that things like code readability are impacted by the frequent use of pushd / popd. There could be lots (more than a screen full) between the pair, and forgetting to put the popd in or losing track of where you are can make things more complicateder. So, I thought: How can I get the benefit of a context manager in bash? It came to mind that simple curly braces might help.

So now I'm thinking of two possible scenarios.

Here's S1:

pushd somewhere
{
    do_a_bunch_of_stuff
}
popd

And S2 would be:

{
    pushd somewhere
    do_a_bunch_of_stuff
    popd
}

I'd like to get feedback. Some choices for reasonable feedback might be:
a. It doesn't matter and I'm clearly overthinking this. Just pick one.
b. I like S[12] and anyone who disagrees will be met with a jihad.
c. Here's a better solution that I didn't think of.

If you got this far, have feedback and are in the Boston area, there's a beer with your name on it.

TIA :-)

--
Time flies like the wind. Fruit flies like a banana. Stranger things have  .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net



reply via email to

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