一段Shell脚本的语法问题

chen7788 2012-11-13 09:31:45

#!/bin/bash
#Reverse Order

echo "Reverse Order and print."

if [ $# -ne 1 ]
then
echo "Usage $0 number"
echo " I will find reverse order of given number."
echo " For e.g. $0 123, I will print 321."
exit 1
fi

n=$1
rev=0
sd=0

while [ $n -gt 0 ]
do
sd=`expr $n % 10`
rev=`expr $rev /* 10 + $sd`
n=`expr $n / 10`

echo "$sd $rev $n"
done

echo "Reversed number is $rev"


结果打印如下:

Reverse Order and print.
expr: syntax error
3 872
expr: syntax error
2 87
expr: syntax error
7 8
expr: syntax error
8 0
Reversed number is


为什么执行后会是有语法错误???
...全文
139 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxdfigo 2012-11-15
  • 打赏
  • 举报
回复
\是转义字符,/不是,如果要转义*需要用\
有点清眸 2012-11-13
  • 打赏
  • 举报
回复
rev=`expr $rev /* 10 + $sd` 改为 rev=`expr $rev \* 10 + $sd` 是运算符出错导致的。
chen7788 2012-11-13
  • 打赏
  • 举报
回复
引用 1 楼 lxdfigo 的回复:
`expr $rev /* 10 + $sd` ?
sd=`expr $n % 10` rev=`expr $rev /* 10 + $sd` n=`expr $n / 10` 这三行都有问题,但是不知道为什么会有问题。。。。
lxdfigo 2012-11-13
  • 打赏
  • 举报
回复
`expr $rev /* 10 + $sd` ?
chen7788 2012-11-13
  • 打赏
  • 举报
回复
OK, I got it. Thank you!
有点清眸 2012-11-13
  • 打赏
  • 举报
回复
引用 4 楼 chen7788 的回复:
引用 3 楼 Yaoxin_ 的回复:rev=`expr $rev /* 10 + $sd` 改为 rev=`expr $rev \* 10 + $sd` 是运算符出错导致的。 是不是在 rev=`expr $rev \* 10 + $sd` 运算里面 乘法是 “\*”如果不是在 rev=`expr $rev \* 10 + $sd`中进行乘法运行是“……
怎么可能,bash里面的语法规则就是这样的。 因为*在bash里面已经有别的意义了(所有), 故如果要复用* 当作乘法的意义,必须\*,比如C里面的\n,也是这个道理。 “/*”是语法错误。
chen7788 2012-11-13
  • 打赏
  • 举报
回复
引用 3 楼 Yaoxin_ 的回复:
rev=`expr $rev /* 10 + $sd` 改为 rev=`expr $rev \* 10 + $sd` 是运算符出错导致的。
是不是在 rev=`expr $rev \* 10 + $sd` 运算里面 乘法是 “\*”如果不是在 rev=`expr $rev \* 10 + $sd`中进行乘法运行是“/*”如:expr $1 /* $2 ??

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧