Visit Our UNIX and Linux User Community


tcl compound condition


 
Thread Tools Search this Thread
Top Forums Programming tcl compound condition
# 1  
Old 07-24-2009
tcl compound condition

Can anyone explain for me why this does not work in tcl:
Code:
if !{( $a > "" || $b > "" )} { .......

where a and b are string vars.
and this works instead:
Code:
if {!( $a > "" || $b > "" )} { ........

Thanks.
# 2  
Old 07-24-2009
Because the second example uses the correct syntax, no?
# 3  
Old 07-24-2009
Well,
I thought a syntax like
Code:
if !{ ....... } { .....

is also valid, am I wrong on this?
Thanks.
# 4  
Old 07-24-2009
I'm getting a syntax error when I'm using that syntax.
# 5  
Old 07-24-2009
This works fine ....
Code:
set WRITE 1
.
.
.
if !{$WRITE} { .......

What do you think?
Thanks.
# 6  
Old 07-24-2009
Quote:
Originally Posted by gio001
This works fine ....
Code:
set WRITE 1
.
.
.
if !{$WRITE} { .......

What do you think?
Thanks.
As I already said, the braces are part of the if syntax. You need them for grouping, so if sees one argument. This is how the parser works.

tcl wiki
Quote:
You can omit braces if the condition is one "word" already (i.e. does not contain whitespace)
In your last example (a single word expression) if does not require grouping (braces) anyway.

It's just how the tcl parser works. Consider the following:

Code:
% set a 1
1
% if !{ $a > 0 } { puts "OK" } ;# syntax error
missing close-brace
% 
% if !{$a>0} { puts "OK" } ;# no spaces, one word and the error changes
can't use non-numeric string as operand of "!"

It works with one word (no syntax error), but omitting the spaces between the elements forces the expression to be threated as a string:

Code:
% puts {$a>0}
$a>0

Hope this helps.
# 7  
Old 07-27-2009
Thanks

Previous Thread | Next Thread
Test Your Knowledge in Computers #559
Difficulty: Easy
A runtime error is an error that occurs while a program is being executed.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Refering to compound variables with a variable name

Hello, Here is my problem using KSH I have a set of compound variables, let say cmp_var1 cmp_var2 The names of these variables are stored in an indexed array. How can I access the subfields of these compound variables ? I tried: set -A cmp_varnames=(cmp_var1 cmp_var2) for cmp in... (4 Replies)
Discussion started by: luky55
4 Replies

2. Shell Programming and Scripting

compound Bash if then statement question

I am writing a Bash script that will either clone a database or setup a standby database. So Parameter 2 will be the operation type. If the value is not clone or standby I want to throw an error message. I suppose I can also do a case block. So far i have been unable to get the syntax working... (1 Reply)
Discussion started by: gandolf989
1 Replies

3. Shell Programming and Scripting

compound variable in korn shell

in a text " Korn Shell Unix programming Manual 3 Edition" i have found this sintax to declare a compoud variable: variable=( fild1 fild1 ) but this sintax in ksh and sh (HP-UNIX) not work... why?? exist another solution for this type of variable ??? (5 Replies)
Discussion started by: ZINGARO
5 Replies

4. Shell Programming and Scripting

compound variable in korn shell

in a text " Korn Shell Unix programming Manual 3 Edition" i have found this sintax to declare a compoud variable: variable=( fild1 (0 Replies)
Discussion started by: ZINGARO
0 Replies

5. Shell Programming and Scripting

awk compound statements

how can i use two or multiple statements in the if part of an awk code for example i want to check two flag if they are true i will write some print operations and increase the counter. here is the c version of the code that i want to write: counter=0; if (flag1==1 && flag2==0) {... (7 Replies)
Discussion started by: gfhgfnhhn
7 Replies

6. Shell Programming and Scripting

Compound command with 'find' utility?

I'm trying to write a script using the 'find' command and it's -exec option to run a compound command against the files found. Example: find . -name "*.conf" -exec cat {} | grep "#" > /tmp/comments.list \; Of course the above doesn't work. So I experimented for a bit to see if there was... (6 Replies)
Discussion started by: deckard
6 Replies

7. UNIX for Advanced & Expert Users

Compound indirect variable references

Using bash, I'm trying to read a .properties file (name=value pairs), assigning an indirect variable reference for each line in the file. The trick is that a property's value string may contain the name of a property that occurred earlier in the file, and I want the name of the 1st property to... (5 Replies)
Discussion started by: tkrussel
5 Replies

8. Shell Programming and Scripting

Trying to use 'compound variable' in a script

Erase the space in assigment operator. array_var=`expr $base_val + $x` (1 Reply)
Discussion started by: irina
1 Replies

9. Shell Programming and Scripting

Trying to use 'compound variable' in a script

Hi there - am newish to shell scripting and would appreciate some advice on this... Am trying to use what I have seen called 'compound variables' in other langs but with no success in my shell script. This is the kind of thing I'm trying to do: base_val=123 stop=3 x=1 while do ... (3 Replies)
Discussion started by: neemic
3 Replies

10. UNIX for Dummies Questions & Answers

compound expression in unix

I am using the code below to write a command to launch a script only if the number of users on the system is less than 10. The code below isn't working. Any suggestions? HELP.. if && ; then frizzle ; fi (3 Replies)
Discussion started by: spalmer
3 Replies

Featured Tech Videos