Using Ubuntu Desktop, I have terminal open and I am using the bash shell. One of the shell expansions of bash is the arithmetic expansion, with the following syntax:


When i do arithmetic, it does return the correct value but it is always followed by "command not found":

$ $((1+2))
3: command not found
$ $[1+2]
3: command not found
$ $[2+2]
4: command not found
$ $((2*6))
12: command not found

My question is why does it display "command not found" and how can I fix that?


You have to add echo command before all of your commands,

$ echo $[1+2]

You don't have to put directly $[1+2] on terminal, because bash computes $[1+2] and again parses the same, so command not found error occurs.

For Example

$ var="sudo apt-get update"
$ $var

Ign http://archive.canonical.com saucy InRelease                               
Ign http://ppa.launchpad.net saucy InRelease                                   
Ign http://ubuntu.inode.at saucy InRelease                          
Ign http://extras.ubuntu.com saucy InRelease                        
29% [Waiting for headers] [Waiting for headers] [Waiting for headers]

In the above example, sudo apt-get update command was assigned to a variable var.On running $var, first bash expands it and again parses the expanded one.

$ $((1+2))
3: command not found

What is happening here is that bash computes $((1+2)) which results in 3. bash then looks for a command named 3 to execute. It doesn't find it. Hence the error. As @Avinash suggests, use echo to avoid this.

$ echo  $((1+2))

Because bash is trying to execute the output of your expansion and it doesnt find any command with name 3 in the PATH. To just try out, use echo or assign it to a variable and use it later.

echo $((1+2))
echo $test

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.