使用 Ubuntu Desktop,我打开了终端并使用 bash shell。bash 的 shell 扩展之一是算术扩展,语法如下:
$(( EXPRESSION ))
or
$[ EXPRESSION ]
当我进行算术运算时,它确实返回了正确的值,但后面总是跟着“未找到命令”:
$ $((1+2))
3: command not found
$ $[1+2]
3: command not found
$ $[2+2]
4: command not found
$ $((2*6))
12: command not found
我的问题是为什么它显示“未找到命令”以及我该如何解决这个问题?
答案1
你必须echo
在所有命令前添加命令,
$ echo $[1+2]
3
您不必直接放在$[1+2]
终端上,因为 bash 会计算$[1+2]
并再次解析相同的内容,因此会出现命令未找到错误。
例如
$ 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]
在上面的例子中,sudo apt-get update
命令被分配给一个变量var
。在运行时$var
,bash 首先扩展它,然后再次解析扩展的命令。
答案2
$ $((1+2))
3: command not found
这里发生的事情是bash
计算$((1+2))
结果为3
。 bash
然后查找名为3
执行的命令。它没有找到它。因此出现错误。正如@Avinash建议的那样,使用echo
来避免这种情况。
$ echo $((1+2))
3
答案3
因为bash
正在尝试执行扩展的输出,但它在 中找不到任何command
带有名称的。如果只是尝试,请使用或将其分配给变量并稍后使用它。3
PATH
echo
echo $((1+2))
3
test=$((1+2))
echo $test
3