Shell-Script
shell Unix 中的計算
我正在嘗試計算 2 次 unix 的差異以進行簡單的計算(在 shell 腳本中),但它似乎不起作用。
我已經設置
$d
了 2 個變數,一個稱為另一個$c
。這是我目前用於設置變數的語法:
c= echo $a | awk -F : '{print ($1 * 32140800) + ($2 * 2678400) + ($3 * 86400) + ($4 * 3600) + ($5 * 60) }' echo $c d= echo $a | awk -F : '{print ($1 * 32140800) + ($2 * 2678400) + ($3 * 86400) + ($4 * 3600) + ($5 * 60) }' echo $d
(變數 a 和 b 只是從另一個腳本接收時間戳)
我正在嘗試減去
$c
from的輸出,$d
但我使用的每種方法似乎都不起作用。我嘗試了以下方法:1)
duration=$(echo "$d - $c") echo $duration
duration=$((d-c)) echo $duration
c= echo $a | awk -F : '{print ($1 * 32140800) + ($2 * 2678400) + ($3 * 86400) + ($4 * 3600) + ($5 * 60) }'
您在這裡缺少命令替換。這將只執行
echo | awk
管道,同時c
在echo
.您在下面使用了命令替換 in
duration=$(echo "$d - $c")
,這也是您在這裡需要的。IEc=$(echo "$a" | awk ...)
(請注意,符號周圍沒有空格
=
,這就是將普通賦值與命令分開的原因,請參閱shell 腳本中變數賦值中的空格)此外,查看 awk 腳本中的數字,您似乎有 31 天的月份,因此有 372 天的年份,這可能是您想要的,也可能不是。如果您的輸入也有秒數,則 awk 腳本不會使用它們。(最後應該有 a
+ $6
嗎?)$a
兩個命令中也有,而不是$a
and$b
。duration=$(echo "$d - $c")
這只會設置
duration
為一個字元串,例如(具有and5678 - 1234
的實際值),因為只是列印給定的內容,它不進行算術運算。d``c``echo
duration=$((d-c))
這應該可以做減法。