将变量乘以整数时bash expr语法错误

时间:2015-01-04 06:08:32

标签: bash osx-yosemite

我正在尝试学习bash,我尝试制作一个简单的bash脚本来测试我的终端。但是,在使用expr命令时,系统会一直告诉我expr命令的语法是错误的。这是脚本:

#!/bin/bash
declare -a typo
x=0
y=25
function arrayAndDisplay {
    for x in y;
    do
        typo[x]= `expr $x * 25`
        echo ${typo[x]}
    done
}
arrayAndDisplay

当我尝试在终端中运行脚本时,这是我收到的错误消息:

expr: syntax error

我查看了参考网站和其他StackOverflow帖子,但似乎没有任何效果。任何人都可以帮助我吗?

P.S:我使用的是Mac OS X Yosemite(10.10.1)

3 个答案:

答案 0 :(得分:1)

*中的expr正在展开,因此您实际上是在传递文件列表而不是乘法符号。逃避它:

    typo[x]= `expr $x \* 25`

答案 1 :(得分:1)

三件事:

  1. for x in y;应为for x in $y;
  2. typo[x]= expr $ x * 25``删除“=”左右之间的空格
  3. typo[x]= expr $ x * 25``删除后面的刻度,因为它不鼓励并使用$(...) Alos你应该逃避“*”因为它有意义并扩展为显示所有当前目录中的文件。所以你应该像:

    一样使用它
    typo[x]=$(expr $x \* 25)
    

答案 2 :(得分:1)

mac OS中的expr语法是

$(($x*25))

而不是

`expr $x \* 25`