标签: arithmetic

如何在shell脚本中将数字转换为时间格式?

我想把视频剪成这样的大约 10 分钟的部分。

ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4
ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4
ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4
Run Code Online (Sandbox Code Playgroud)

有了for它就会变成这样。

for i in `seq 10`; do ffmpeg -i video.mp4 -ss 00:${i}0:00 -t 00:10:00 -c copy ${i].mp4; done;
Run Code Online (Sandbox Code Playgroud)

但它仅在持续时间小于一小时时有效。如何在bash shell中将数字转换为时间格式?

shell bash ffmpeg time arithmetic

3
推荐指数
1
解决办法
5828
查看次数

在 shell 脚本中减去浮点数

我正在尝试使用 CPU 使用率在 shell 脚本中进行一些计算。其中返回浮点数。但是当我减去这个数字时,我得到了错误。请参阅以下代码和错误。

代码

#!/bin/sh

CPU_IDLE=98.67
echo $CPU_IDLE
CPU_USAGE=$(( 100 - $CPU_IDLE ))
echo $CPU_USAGE
Run Code Online (Sandbox Code Playgroud)

错误

./poc.sh: line 14: 100 - 98.67 : syntax error: invalid arithmetic operator (error token is ".67 ")
Run Code Online (Sandbox Code Playgroud)

linux bash ksh shell-script arithmetic

3
推荐指数
1
解决办法
3945
查看次数

bash 中的算术语法

我在算术值上遇到以下错误

#!/bin/bash
n=0
line_count=9
line_count=$(line_count)/3
echo $line_count
exit 0
Run Code Online (Sandbox Code Playgroud)

预期结果是 3

[]$ ./test.sh
./test.sh: line 4: line_count: command not found
/3
[]$ more test.sh
Run Code Online (Sandbox Code Playgroud)

bash shell-script arithmetic

3
推荐指数
2
解决办法
1288
查看次数

zsh 算术比较给出误报

为什么将 0 作为参数传递会导致误报(打印“True”)?

#!/bin/zsh

k="$1"

if ((0 < k < 1))
then
    echo "True"
fi
Run Code Online (Sandbox Code Playgroud)

注意这个脚本被称为stitch_applier.sh

终端

% ./stitch_applier.sh 0
True
Run Code Online (Sandbox Code Playgroud)

这是在 Linux 系统上运行的。

zsh shell-script arithmetic

3
推荐指数
1
解决办法
207
查看次数

Shell 脚本在文件中划分数字

我有一个单列和 12 行。每行都有数值。我想使用 shell (bash) 脚本将每行值除以某个常数(比如 C)。这该怎么做 ?提前致谢..

shell-script arithmetic

2
推荐指数
1
解决办法
1万
查看次数

错误:预期的整数表达式

我编写了一个脚本来确定服务器上的平均负载,如下所示:

#!/bin/bash

loadavg=`top -b -n1 | grep -i load | awk -F, '{print$4}'| awk -F: '{print $2}'`

if [ "${loadavg}" -le  1 ]
then
echo "OK - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 0;
elif [ "${loadavg}" -gt 1 ] && [ "${loadavg}" -le 2 ]
then
echo "WARNING - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 1;
elif [ "${loadavg}" -gt 2 ]
then
echo "CRITICAL - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 2;
else
echo "UNKNOWN …
Run Code Online (Sandbox Code Playgroud)

bash shell-script arithmetic floating-point

2
推荐指数
1
解决办法
5489
查看次数

如何用 BASH 减去从其他 2 个文件中提取的 2 个浮点数

我试图找出我从两个文件中获取的两个数字之间的差异。我认为我的代码会有意义:

我试图通过两种不同的方法使其工作,但没有奏效。我得到的输出是零 (0)。

#method 1
difference_btwn_eng_hrs_MX3_122=$(($(sed -n '1p' engine_hours_new_MX3_122.txt)-$(sed -n '1p' engine_hours_old_MX3_122.txt)))
echo "$difference_btwn_eng_hrs_MX3_122"

#method 2
new=$(sed -n '1p' engine_hours_new_MX3_122.txt)
old=$(sed -n '1p' engine_hours_old_MX3_122.txt)
echo "$new $old" | awk '{print $new - $old}'
Run Code Online (Sandbox Code Playgroud)

最终我将使用差异来设置电子邮件更新的间隔。

文件里面的值分别是511.786(新)和509.768(旧),我从终端得到的错误如下:

line 40: 511.786-509.765: syntax error: invalid arithmetic operator (error token is ".786-509.765")
Run Code Online (Sandbox Code Playgroud)

bash shell-script arithmetic floating-point

2
推荐指数
1
解决办法
1万
查看次数

Makefile 规则中的算术运算

我需要在 bash 循环内执行算术运算,如下所述

CYCLE?=3
COUNT=1

download_when_ready: ## Will try the download operations many times till it succeeds or it reaches 10 tries
    while ! composer update $(bundle) 2> /dev/null && [[ $(COUNT) -lt 10 ]]; \
    do \
        COUNT=$$(( $(COUNT)+1 )); \
        SLEEP=$$(( ($(COUNT) / $(CYCLE)) + ($(COUNT) % $(CYCLE)) )); \
        echo "count $(COUNT)"; \
        echo "cycle $(CYCLE)"; \
        echo "sleep $(SLEEP)"; \
        sleep $(SLEEP); \
    done
Run Code Online (Sandbox Code Playgroud)

这永远不会停止并给出以下内容:

count 0
cycle 4
sleep 0

count 0
cycle 4
sleep …
Run Code Online (Sandbox Code Playgroud)

bash make arithmetic

2
推荐指数
1
解决办法
4175
查看次数

如何使用awk对每列求和并打印列名和列总和?

我有一个带有数字表的文件;第一行是标题行。我想对每列求和并使用 awk 打印出每列的总和和列名。

我该怎么做?

awk text-processing statistics arithmetic

2
推荐指数
1
解决办法
1225
查看次数

将两个不同模式之间的数字相乘并打印整个文件

我想用相乘的数字替换模式之间的数字并打印所有行。该文件是 newick 格式的树文件,仅包含一行。我的目标是之后)和之前的所有数字:。我想将两个符号之间的所有数字乘以 100。

文件:

((((A_8:0.000846,(A_5:0.002449,(A_1:1e-06,((A_4:1e-06,((A_7:1e-06,A_6:0.001061)0.714000:1e-06,A_3:1e-06)0.314500:1e-06)0.358667:1e-06,A_2:1e-06)0.361000:1e-06)0.434800:1e-06)0.683500:0.001619)0.888571:0.001931,A_9:0.00069)0.688471:0.000691,...
Run Code Online (Sandbox Code Playgroud)

对我来说,最简单的方法似乎是通过先用新行替换所有“:”符号来拆分文件。所以我所有的目标数字现在都在单独的行中并出现在). 然后,我使用下面的 awk 脚本将目标数字乘以 100,但没有设法保留没有目标数字的行。

脚本:

((((A_8:0.000846,(A_5:0.002449,(A_1:1e-06,((A_4:1e-06,((A_7:1e-06,A_6:0.001061)0.714000:1e-06,A_3:1e-06)0.314500:1e-06)0.358667:1e-06,A_2:1e-06)0.361000:1e-06)0.434800:1e-06)0.683500:0.001619)0.888571:0.001931,A_9:0.00069)0.688471:0.000691,...
Run Code Online (Sandbox Code Playgroud)

)在这种情况下,如何将数字相乘并打印整个文件?或者还有其他更简单的方法可以直接查找:和之间的数字),将它们乘以 100 并打印整个文件?

更新:预期输出

((((A_8:0.000846,(A_5:0.002449,(A_1:1e-06,((A_4:1e-06,((A_7:1e-06,A_6:0.001061)71.4000:1e-06,A_3:1e-06)31.4500:1e-06)35.8667:1e-06,A_2:1e-06)36.1000:1e-06)43.4800:1e-06)68.3500:0.001619)88.8571:0.001931,A_9:0.00069)68.8471:0.000691,...)
Run Code Online (Sandbox Code Playgroud)

sed awk arithmetic

2
推荐指数
2
解决办法
238
查看次数