【发布时间】:2011-06-09 22:39:25
【问题描述】:
我有一个简单的 bash 脚本,它构成了我开发的内部网络应用程序的一部分。
它的目的是在用户删除原始图像时自动删除图像的缩略图。
脚本将一些基本状态信息记录到文件/var/log/images.log
#!/bin/bash
cd $thumbpath
filecount=0
# Purge extraneous thumbs
find . -type f | while read file
do
if [ ! -f "$imagepath/$file" ]
then
filecount=$[$filecount+1]
rm -f "$file"
fi
done
echo `date`: $filecount extraneous thumbs removed>>/var/log/images.log
虽然脚本正确删除了缩略图,但它没有正确输出正在清除的缩略图数,它始终显示0。
例如,刚刚手动创建了一些孤立缩略图,然后运行我的脚本,手动生成的孤立缩略图被删除,但日志显示:
2011 年 6 月 9 日星期四 23:30:12 BST:0 个多余的拇指被删除
当文件正在被删除时,我做错了什么阻止 $filecounter 显示非零的数字。
我创建了以下 bash 脚本来测试它,它运行良好,输出 0 然后 1:
#!/bin/bash
count=0
echo $count
count=$[$count+1]
echo $count
编辑:
感谢您的回答,但是为什么以下工作会起作用
$ x=3
$ x=$[$x+1]
$ echo $x
4
...第二个示例也有效,但在第一个脚本中不起作用?
第二次编辑:
这行得通
count=0
echo Initial Value $count
for i in `seq 1 5`
do
count=$[$count+1]
echo $count
done
echo Final Value $count
Initial Value 0
1
2
3
4
5
Final Value 5
就像用count=$((count+1)) 替换count=$[$count+1] 一样,但不是在我的初始脚本中。
【问题讨论】: