一个shell脚本引用变量的问题

#!/bin/shgetTiming(){start=$1end=$2start_s=$(echo$start|cut-d'.'-f1)start_ns=$(echo$s... #!/bin/sh
getTiming()
{
start=$1
end=$2

start_s=$(echo $start | cut -d '.' -f 1)
start_ns=$(echo $start | cut -d '.' -f 2)
end_s=$(echo $end | cut -d '.' -f 1)
end_ns=$(echo $end | cut -d '.' -f 2)

# for debug..
echo $start
echo $end

time=$(( ( 10#$end_s - 10#$start_s ) * 1000 + ( 10#$end_ns / 1000000 - 10#$start_ns / 1000000 ) ))

echo "$time ms"
}

echo "This is only a test to get a ms level time duration..."
start=$(date +%s.%N)
ls >& /dev/null # hey, be quite, do not output to console....
end=$(date +%s.%N)

getTiming $start $end

这个shell脚本执行:inter.sh: syntax error at line 8: `start_s=$' unexpected
这是什么错误呢?不能这么用?Solaris系统,谢谢!
展开
 我来答
kwydwuf
2013-01-18 · TA获得超过7411个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2012万
展开全部
solaris 的 /bin/sh 是最原始的 shell, 应该是不支持 $() 这类用法的, 你可以换成 bash。 即把

#!/bin/sh
改成
#!/path/to/bash

一般来说,要么是 /bin/bash 或者 /usr/bin/bash
whoami2099
2013-01-18 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:171万
展开全部
start_s=$(echo $start | cut -d '.' -f 1) 修改成
start_s=`echo $start | cut -d '.' -f 1) `
追问
1、为什么要这么换呢?因为bash的要求?

2、为什么这段shell执行后,没有打印出时间差,只是打印出%s.%N?bash: +%s.%N: command not found,bash不支持%s.%N?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式