Randall R Schulz wrote:
On Friday 14 November 2008 20:54, David C. Rankin wrote:
Listmates,
Stuck on a stupid bash problem again. Why can't I set a variable within a set of parenthesis?
#!/bin/bash
# This works
[[ $1 == "--verbose" || $1 == "-v" ]] && verbose='y'
[[ $1 == "--verbose" || $1 == "-v" ]] && ( echo "this"; echo "that" )
# This _doesn't_ work
[[ $1 == "--verbose" || $1 == "-v" ]] && ( verbose='y'; echo "that" )
No matter what I do, if I try to set a variable inside the ( ) expression, it never gets set -- Why?
What Jim Cunning said is correct.
However, there is another similar kind of command grouping syntax that does not cause the creation of a sub-shell: the { curly brace }. Side-effect on local variables and shell options made within this construct _do_ persist outside / beyond it.
-- David C. Rankin
Randall Schulz
Randall, I will have to try that again. I thought something similar to brace expansion was correct, like awk '{ do this/that }', but the last time I tried (and I tried a lot), BASH kept complaining about my syntax (not a uncommon happening), I'll give it another go. My desire for one-liners for simple tests is to cut down on the amount of scrolling I have to do while editing which for me makes the script more readable. If I can reduce two pages of "does this variable exist"" "is it defined?" "is the file writable?"... to 5 lines, then I simply have a small test block that precedes the actual logic of the script instead of two pages of simple tests. Thanks for everyones help. It's getting wrapped around the axle on the little stuff that takes the most time... -- David C. Rankin, J.D.,P.E. | Rankin Law Firm, PLLC | Countdown for openSuSE 11.1 510 Ochiltree Street | http://counter.opensuse.org/11.1/small Nacogdoches, Texas 75961 | Telephone: (936) 715-9333 | openSoftware und SystemEntwicklung Facsimile: (936) 715-9339 | http://www.opensuse.org/ www.rankinlawfirm.com | -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org