() executes the statements in a new subshell, with separate state. {} executes stuff in the current shell.
Example:
this doesn't print "hello" because the variable was assigned inside a new shell, whose state was discarded when the () expression ended. Think of variable scoping in C; variables live and die inside the block where they're declared.
this prints "hello" because the variable was assigned in the same shell as the next statement.
It's the same difference as:
and
Also, yes, you need a semicolon to end the last statement inside {}; that's how the shell's grammar is defined.
Kind of how you can either do this:
or this, using newlines instead of semicolons to separate the syntax parts:
According to the bash man page, it's different from () because { and } are reserved words instead of metacharacters, which means they don't automatically cause word breaks. Presumably the same applies in the rest of the shells.
Last edited by EagleFlyFree; 04-23-2009 at 03:14 PM..
I need to print some mandatory instructions if something fails in the script. I am using set -e to check and exit the script if some scripts/commands return non zero exit code. Is there any way to print these instructions with set command?? (0 Replies)
I want to capture actual error message in case the commands I use in my shell script fails.
For eg:
ls -l abc.txt 2>>errorlog.txt
In this case I understand the error message is written to the errorlog.txt and I assume its bacause the return code from the command ls -l abc might return 2 if... (3 Replies)
hi All
I have a scritp running which connects to a local host and then gets a value from a field and then ftp that value to antoher server. It is running fine, and from crontab it gives the output to a file, the problem is sometime it doesnt run but if i check the output file it does not show one... (0 Replies)
Hi everyone,
when executing this command in unix:
echo "WM7 Fatal Alerts:", $(cat query1.txt) > a.csvIt works fine, but running this command in a shell script gives an error saying that there's a syntax error.
here is content of my script:
tdbsrvr$ vi hc.sh
"hc.sh" 22 lines, 509... (4 Replies)
Hi,
Want to log the output of command & check the exit status to find whether it succeeded or failed.
> ls abc
ls: abc: No such file or directory
> echo $?
1
> ls abc 2>&1 | tee log
ls: abc: No such file or directory
> echo $?
0
Tee commands changes my exit status to be always... (7 Replies)
I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes
CC=`which gcc`
CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Input is list of Server's, script is basically to remove old_rootvg, So it should check first command "alt_rootvg_op -X old_rootvg" if it passes move to next server and starts check and if it fails moves to other command "exportvg old_rootvg" for only that particular server. I came up with below,... (6 Replies)
Hi,
i am new here let me say HI for all.
now i have a question please:
i am sending one command to my machine to create 3 names.
if one of the names exists then the box return error message that already have the name but will continue to create the rests.
How i can break the command and... (7 Replies)
Discussion started by: Amiri
7 Replies
LEARN ABOUT V7
struct
STRUCT(1) General Commands Manual STRUCT(1)NAME
struct - structure Fortran programs
SYNOPSIS
struct [ option ] ... file
DESCRIPTION
Struct translates the Fortran program specified by file (standard input default) into a Ratfor program. Wherever possible, Ratfor control
constructs replace the original Fortran. Statement numbers appear only where still necessary. Cosmetic changes are made, including chang-
ing Hollerith strings into quoted strings and relational operators into symbols (.e.g. `.GT.' into `>'). The output is appropriately
indented.
The following options may occur in any order.
-s Input is accepted in standard format, i.e. comments are specified by a c, C, or * in column 1, and continuation lines are specified
by a nonzero, nonblank character in column 6. Normally, a statement whose first nonblank character is not alphanumeric is treated
as a continuation.
-i Do not turn computed goto statements into switches. (Ratfor does not turn switches back into computed goto statements.)
-a Turn sequences of else ifs into a non-Ratfor switch of the form
switch {
case pred1: code
case pred2: code
case pred3: code
default: code
}
The case predicates are tested in order; the code appropriate to only one case is executed. This generalized form of switch state-
ment does not occur in Ratfor.
-b Generate goto's instead of multilevel break statements.
-n Generate goto's instead of multilevel next statements.
-en If n is 0 (default), place code within a loop only if it can lead to an iteration of the loop. If n is nonzero, admit code segments
with fewer than n statements to a loop if otherwise the loop would have exits to several places including the segment, and the seg-
ment can be reached only from the loop.
FILES
/tmp/struct*
/usr/lib/struct/*
SEE ALSO f77(1)BUGS
Struct knows Fortran 66 syntax, but not full Fortran 77 (alternate returns, IF...THEN...ELSE, etc.)
If an input Fortran program contains identifiers which are reserved words in Ratfor, the structured version of the program will not be a
valid Ratfor program.
Extended range DO's generate cryptic errors.
Columns 73-80 are not special even when -s is in effect.
Will not generate Ratfor FOR statements.
STRUCT(1)