Shell 1394661620440271000/1000000:没有此类文件或目录

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 )) 你不能只在命令行上说/

我正在shell脚本中运行此命令,以获取时间(毫秒):

    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。