Shell 1394661620440271000/1000000:没有此类文件或目录
我正在shell脚本中运行此命令,以获取时间(毫秒):Shell 1394661620440271000/1000000:没有此类文件或目录,shell,date,milliseconds,elapsedtime,Shell,Date,Milliseconds,Elapsedtime,我正在shell脚本中运行此命令,以获取时间(毫秒): START=`$(date +%s%N)/1000000` 然而,我不断得到错误: 1394661620440271000/1000000: No such file or directory 我试图通过添加括号、额外的美元符号来更改代码,但我不断地遇到各种各样的错误。如何修复代码?有人能帮忙吗?假设您正在使用bash: START=$(( $(date '+%s%N') / 1000000 )) 你不能只在命令行上说/
START=`$(date +%s%N)/1000000`
然而,我不断得到错误:
1394661620440271000/1000000: No such file or directory
我试图通过添加括号、额外的美元符号来更改代码,但我不断地遇到各种各样的错误。如何修复代码?有人能帮忙吗?假设您正在使用bash:
START=$(( $(date '+%s%N') / 1000000 ))
你不能只在命令行上说/来划分数字。((…)在bash中进行算术计算。假设您使用的是bash:
START=$(( $(date '+%s%N') / 1000000 ))
你不能只在命令行上说/来划分数字。((…)在bash中进行算术计算。我想您需要以下内容:
START=$(($(date +%s%N)/1000000))
我想你想要的是:
START=$(($(date +%s%N)/1000000))
您还可以使用普通字符串操作:
$ start=$(date '+%s%N')
$ echo $start
1394663274979099354
$ echo ${start:0:-6}
1394663274979
您还可以使用普通字符串操作:
$ start=$(date '+%s%N')
$ echo $start
1394663274979099354
$ echo ${start:0:-6}
1394663274979
printf
语句可以将值舍入到最接近的毫秒:
printf "%0.3f\n" $(date +%s.%N)
printf
语句可以将值舍入到最接近的毫秒:
printf "%0.3f\n" $(date +%s.%N)
将反勾号更改为双引号。您还需要使用某种计算器来进行除法。Backticks的意思是“作为命令执行内部的内容”
1394661620440271000/1000000
并不意味着“执行除法”,它意味着“执行1394661620440271000/1000000
文件”。理解此类错误的最快方法是使用set-vx
打开shell调试/跟踪功能,并使用set+vx
将其关闭。用这些来包装你的问题线,你至少会提出一个新的问题层次。请尝试ST=$($(日期+%s%N)/1000000))
。祝你好运。将反勾号改为双引号。您还需要使用某种计算器来进行除法。Backticks的意思是“作为命令执行内部的内容”1394661620440271000/1000000
并不意味着“执行除法”,它意味着“执行1394661620440271000/1000000
文件”。理解此类错误的最快方法是使用set-vx
打开shell调试/跟踪功能,并使用set+vx
将其关闭。用这些来包装你的问题线,你至少会提出一个新的问题层次。请尝试ST=$($(日期+%s%N)/1000000))
。祝你好运,来吧,你比我慢了12秒。。。太糟糕了。你还有一个解释,所以+1。有没有办法在秒和毫秒之间得到一个点?e、 g.如果是14160毫秒,我会得到14.160的输出?如果你使用格伦·杰克曼的方法:使用日期+%s.%N,然后切掉最后六个字符。$(…)
是POSIX规范的一部分,而不是bash
ism。来吧,你把我逼了12秒。。。太糟糕了。你还有一个解释,所以+1。有没有办法在秒和毫秒之间得到一个点?e、 g.如果是14160毫秒,我会得到14.160的输出?如果你使用glenn jackman的方法:使用日期+%s.%N,然后切掉最后六个字符。$(…)
是POSIX规范的一部分,而不是bash
ism。