例如,变量包含数字,而不是整数
321.23453
如何将给定数字舍入为整数,以便进一步除以整数。
echo "TEXT $((($time/2))) TEXT"
我试过了,没用。我对四舍五入一无所知,也许可以除以整数而不对数字进行四舍五入?
data=$(ffmpeg -i /video.mp4 -vf cropdetect -f null - 2>&1 |
awk \'/crop=/ {time=$(NF-2); crop=$NF} END {print time, crop}\')
echo $data | cut -d" " -f1
echo $data | cut -d" " -f2
结果
t:49.960000
crop=1920:1072:0:4
我试图立即以数组形式获取结果
eval declare -A data=(`ffmpeg -i /video.mp4 -vf cropdetect -f null - 2>&1 |
awk \'/crop=/ {time=$(NF-2); crop=$NF}
END {print "[time]=" time,
"[crop]=" crop}\'`)
echo ${data[time]}
不起作用,结果是空的,我没有尝试过任何选项......
我通过 PowerShell 通过 ssh 连接到我的 Linux 服务器。在这种情况下,俄语显示不正确,并且 locale 命令生成 POSIX:
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
如果直接通过服务器终端查看,则俄语正常显示,语言环境显示 ru_RU.UTF-8
感谢您关注我的问题!
我正在尝试使用clock_gettime 获取发送数据报和接收数据报之间的时间。
for(optval = 0; optval < 10; optval++){
clock_gettime(CLOCK_MONOTONIC, &ts_1);
sendto(sd, packet, sizeof(struct icmphdr), 0, (struct sockaddr*)&addr_req, sizeof(struct sockaddr_in));
recvfrom(sd, bufer, sz_buf, 0, (struct sockaddr*)&from_req, &tolen);
clock_gettime(CLOCK_MONOTONIC, &ts_2);
t_eq = (ts_2.tv_nsec - ts_1.tv_nsec) / 1000000.0;
total = (ts_2.tv_sec -ts_1.tv_sec) * 1000.0 + t_eq;
printf("\tt_total = %Lf ms\n", total);
sleep(1);
}
结论
t_total = 69.268422 ms
t_total = 72.526032 ms
t_total = 69.225890 ms
t_total = 70.945620 ms
t_total = 69.188274 ms
t_total = 69.181105 ms
t_total = 69.295679 ms
t_total = 72.721442 ms
t_total = 69.633848 ms
t_total = 69.522615 ms
如果我在新的终端仿真器会话中运行到另一台主机的标准ping程序,那么我的程序的输出将如下所示
t_total = 69.686600 ms
t_total = 0.044133 ms
t_total = 0.053209 ms
t_total = 0.043486 ms
t_total = 0.038839 ms
t_total = 0.042971 ms
t_total = 0.042133 ms
t_total = 0.043499 ms
t_total = 0.045853 ms
t_total = 0.018189 ms
这和什么有关系呢?