【发布时间】:2018-01-27 15:35:15
【问题描述】:
我正在尝试编写一个函数,该函数应该将 hr:min:sec,ms(即 15:41:47,757)形式的时间戳转换为毫秒。函数如下:
#!/bin/sh
mili () {
hr=$(echo "$1" | cut -c1-2)
echo "hr is: " $hr
min=$(echo "$1" | cut -c4-5)
echo "min is: " $min
sec=$(echo "$1" | cut -c7-8)
echo "sec is: " $sec
ms=$(echo "$1" | cut -c10-12)
echo "ms is: " $ms
total=$(($hr \* 3600 + $min \* 60 + $sec) \* 1000 + $ms)
return "$total"
#echo "Result is: "$total" "
}
mili $1
但是,当我运行它时:
./mili.sh "15:41:47,757"
我收到以下输出消息:
./mili.sh: command substitution: line 15: syntax error near unexpected token
`\*'
./mili.sh: command substitution: line 15: `($hr \* 3600 + $min \* 60 + $sec)
\* 1000 + $ms'
./mili.sh: line 17: return: : numeric argument required
我尝试过使用和不使用单引号、双引号和反引号的 expr 变体,但似乎永远无法让它计算算术。我可以确认一个像这样的简单命令有效:expr 2 * 3 但是当我尝试在我的脚本中使用类似的东西时它失败了。
我怎样才能让它简单地计算我的表达式?
【问题讨论】:
-
有什么特别的理由使用 mili 而不是 milli (如millisecond)?