quck question about expr and (( ))


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting quck question about expr and (( ))
# 1  
Old 04-04-2009
quck question about expr and (( ))

Hi

just a quick question, i have always used

Code:
var=`expr $var + 1`

to increment a variable or to perform arrithmetic. however, i found another script which did this

Code:
(( var = var + 1 ))

which worked exactly the same ? ... can anybody tell me where I can read up on this, and where I can find docs ? i tried googling and i dont even know where to start ...what is this method called ?

likewise.. whats the deal with using double square brackets on the ' test' command .. ie

Code:
   if [[ $account = "*hello*" ]] ; then

i looked at the man page for test but couldnt find anything about the use of double brackets ?


Can anybody help me grasp these two double bracket methods or point me to some docs where i can read about where and how to use them ?

Any help would be great
# 2  
Old 04-04-2009
Quote:
Originally Posted by hcclnoodles
Hi

just a quick question, i have always used

Code:
var=`expr $var + 1`

to increment a variable or to perform arrithmetic. however, i found another script which did this

Code:
(( var = var + 1 ))

which worked exactly the same ? ... can anybody tell me where I can read up on this, and where I can find docs ? i tried googling and i dont even know where to start ...what is this method called ?

likewise.. whats the deal with using double square brackets on the ' test' command .. ie

Code:
   if [[ $account = "*hello*" ]] ; then

i looked at the man page for test but couldnt find anything about the use of double brackets ?


Can anybody help me grasp these two double bracket methods or point me to some docs where i can read about where and how to use them ?

Any help would be great



The double brackets are called let command.
And you can find lot of documentation on Internet
# 3  
Old 04-04-2009
sorry which one is the let command the (( )) or the [[ ]] ?

Cheers
# 4  
Old 04-04-2009
Quote:
Originally Posted by hcclnoodles
sorry which one is the let command the (( )) or the [[ ]] ?

Cheers

(( ))
# 5  
Old 04-04-2009
thanks siquadri

ok from a bit of further investigation on the square bracket usage

it seems to enable the use of regular expressions / wildcards inside the test condition

i.e

Code:
if [[ $account = "*hello*" ]] ; then

will be true if "account" = "helloworld" or "wellhello"

but, with single brackets only absolute matches to the condition will work and you cannot use regexes, so this will not work if "account" = "helloworld"

Code:
if [ $account = "*hello*" ] ; then

but this will
Code:
if [ $account = "helloworld" ] ; then

I still have no idea what this method is called, but hey .. i know what it does Smilie
# 6  
Old 04-04-2009
Further to hccnoodles.
All of your questions are answered in "man ksh".
Tip: To find a suitable search key for your "man" pager, try using grep to give a decent phrase to search on.

man ksh|grep "\[\["
man ksh|grep "(("


The "man test" page is equivalent to the condition between the single square brackets [ ... ] . Most modern shells have "test" built-in so if in doubt read the shell manual.

Some regular expressions between double square brackets [[ ... ]] actually have the same syntax as "test".
# 7  
Old 04-04-2009
Quote:
Originally Posted by hcclnoodles
thanks siquadri

Code:
if [[ $account = "*hello*" ]] ; then

will be true if "account" = "helloworld" or "wellhello"
Quick word about this, and this is true of Bash, so I'm not sure if it is true in ksh...

You would need to use the "=~" operator, not just "=" to use the regular expressions.

Code:
[[ "stuff" =~ ".*tuff" ]] && echo yes
yes

Notice it is standard regular expressions, not shell wildcards (meaning .* matches any character, not *)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Nn$( expr $n + 1)

HI there I am trying to understand Shell scripting to create my own, I am attempting a few examples can anyone tell me what this means?n=$( expr $n + 1)Tried looking on the internet, but just cannot find its anywhere :( .Help please (4 Replies)
Discussion started by: steve2015
4 Replies

2. Shell Programming and Scripting

If + expr

Hi I have bellow script: t1=`cat node1.txt | grep thread1 | cut -f2 -d '-'` t2=`cat node2.txt | grep thread2 | cut -f2 -d '-'` t3=`cat node1_rcat.txt | grep thread1 | cut -f2 -d '-'` t4=`cat node2_rcat.txt | grep thread2 | cut -f2 -d '-'` if ]; then echo "no restore" >> log.log... (6 Replies)
Discussion started by: primo102
6 Replies

3. Shell Programming and Scripting

Error with expr - "expr: syntax error"

Hi All, I'm writing a shell script in KSH, where I want to store the filename, total record count and actual record count of all the source files. The source files reside in 4 different sub-folders under the same root folder. Below is code: #!/usr/bin/ksh... (6 Replies)
Discussion started by: jagari
6 Replies

4. UNIX for Dummies Questions & Answers

Performance of let and expr

i have been told that 'let' is faster than 'expr' in terms of performance. Is this correct? if yes, why is it so? i am not able to see any performance difference in small arithmetic operations. Thanks (3 Replies)
Discussion started by: pandeesh
3 Replies

5. UNIX for Dummies Questions & Answers

expr ?!

Hey there i want to subtract the content from $b from $a. Each variable has got 18 values (normal numbers from 0 - 99). How can i subtract them? I know i have to use the expr command, this is what i have till now: a=`cat Tabelle.dat | awk {'print $4'} | awk -F: {'print $1'}` b=`cat... (1 Reply)
Discussion started by: Mad van Bert
1 Replies

6. Shell Programming and Scripting

the expr \*

$ cat > mtable #!/bin/sh # #Script to test for loop # # if then echo "Error - Number missing form command line argument" echo "Syntax : $0 number" echo "Use to print multiplication table for given number" exit 1 fi n=$1 for i in 1 2 3 4 5 6 7 8 9 10 do echo "$n * $i = `expr $i \*... (1 Reply)
Discussion started by: jackel7777
1 Replies

7. Shell Programming and Scripting

test expr VS [ expr ]

What is the difference between test expr VS . For example : if test 5 -eq 6 echo "Wrong" and if echo "Wrong" bot will give the same output as Wrong. Now, what is the difference between these two? though they are producing the same result why we need two? Any answer will be... (2 Replies)
Discussion started by: ashok.g
2 Replies

8. Red Hat

how to use expr

i am new to shell programming, currently using redhat linux of version 2.4.20-8. i have problem in executing expr command in the following shell script $ x=5 $ x='expr $x + 1' $ echo $x the output is displaying always expr $x + 1 Pls guide me for the above query (3 Replies)
Discussion started by: saikumarm80
3 Replies

9. UNIX for Dummies Questions & Answers

expr question

I am running the following Y=05 Y=`expr $X - 1` and I getting a result of 4. Does anyone know if there is a way to make the result 04 instead of 4? (3 Replies)
Discussion started by: low90s
3 Replies

10. UNIX for Dummies Questions & Answers

expr

Hello! I want to evaluate some mathematical expressions in a script and I try to use 'expr' command. Unfortunatally, when I have, for example, expr 8.2 + 6 the result is 'expr: non-numeric argument' Why ? I work on SunOs 5.7. Thanks in advance Nathe (5 Replies)
Discussion started by: Nathe
5 Replies
Login or Register to Ask a Question