在BASH脚本中使用if/fi将变量与int进行比较
我试图将$duration变量与int进行比较,看看它有多长。我需要确定要在文件名中附加多少个0以保持干净的名称,例如 cap_000001.png cap_002938.png 我目前的发言是:在BASH脚本中使用if/fi将变量与int进行比较,bash,Bash,我试图将$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$d
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
if[$duration<1000];然后
sudo./v2u cap_000$duration.png
回声1000秒
fi
如果[$duration<100];然后
sudo./v2u cap_0000$duration.png
回声100秒
fi
如果[$持续时间<10];然后
sudo./v2u cap_u00000$duration.png
回声10秒
fi
谢谢你的帮助
如果有人有一个更简单的解决方案,用一致的位数命名文件,那也太好了 试试
manprintf
。对于这个任务来说,它比一堆if
块要好得多
sudo ./v2u $(printf "cap_%06d.png" "$duration")
请尝试
manprintf
。对于这个任务来说,它比一堆if
块要好得多
sudo ./v2u $(printf "cap_%06d.png" "$duration")
要直接回答有关比较数字的问题,请执行以下操作:
if [ "$duration" -lt 1000 ]; then
你明白了。:-)
Amber的答案当然是,从森林而不是树木的角度来看要好得多:
printf "cap_%06d.png" "$duration"
要直接回答有关比较数字的问题,请执行以下操作:
if [ "$duration" -lt 1000 ]; then
你明白了。:-)
Amber的答案当然是,从森林而不是树木的角度来看要好得多:
printf "cap_%06d.png" "$duration"
如果您更喜欢使用比较运算符,例如
,而不是-lt
,Bash会执行如下数字比较:
if (( duration < 1000 )); then
如果您更喜欢使用比较运算符,例如
,而不是-lt
,Bash会执行如下数字比较:
if (( duration < 1000 )); then
同意这是一个更好的解决方案+1.我也对OP的问题写了一个直接的回答,以及你的方法的详细版本。我希望你不会介意。:-)同意这是一个更好的解决方案+1.我也对OP的问题写了一个直接的回答,以及你的方法的详细版本。我希望你不会介意。:-)