我试图将$ duration变量与int进行比较,看看它有多长。我需要去除多少0来附加到文件名以保持干净的名称,例如。
cap_000001.png
cap_002938.png
我目前的陈述是:
if [ $duration < 1000 ]; then
sudo ./v2u cap_000$duration.png
echo 1000 seconds
fi
if [ $duration < 100 ]; then
sudo ./v2u cap_0000$duration.png
echo 100 seconds
fi
if [ $duration < 10 ]; then
sudo ./v2u cap_00000$duration.png
echo 10 seconds
fi
感谢帮助!
如果某人有更简单的解决方案来命名具有一致数字位数的文件,那么这也很棒!
答案 0 :(得分:2)
试试man printf
。对于这项任务而言,远远超过一堆if
块。
sudo ./v2u $(printf "cap_%06d.png" "$duration")
答案 1 :(得分:2)
直接回答有关比较数字的问题:
if [ "$duration" -lt 1000 ]; then
你明白了。 : - )
当然,从森林而不是树木的角度来看,Amber的答案要好得多:printf "cap_%06d.png" "$duration"
答案 2 :(得分:0)
如果您希望使用>
而不是-lt
等比较运算符,Bash会进行如下数值比较:
if (( duration < 1000 )); then
然而,printf
是可行的方法。
这会对printf
方法产生类似的影响,也无需执行任何if
语句:
num=000000$duration
sudo ./v2u "cap_${num: -6}.png"