我正在尝试学习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)
答案 0 :(得分:1)
*
中的expr
正在展开,因此您实际上是在传递文件列表而不是乘法符号。逃避它:
typo[x]= `expr $x \* 25`
答案 1 :(得分:1)
三件事:
for x in y;
应为for x in $y;
typo[x]=
expr $ x * 25``删除“=”左右之间的空格 typo[x]=
expr $ x * 25``删除后面的刻度,因为它不鼓励并使用$(...)
Alos你应该逃避“*”因为它有意义并扩展为显示所有当前目录中的文件。所以你应该像:
typo[x]=$(expr $x \* 25)
答案 2 :(得分:1)
mac OS中的expr
语法是
$(($x*25))
而不是
`expr $x \* 25`