【shell】循环执行命令行
在shell 下面循环执行命令行,但不想用 cron 任务, 只用纯粹的 shell 指令,要怎样实现呢。
比如, 现在要执行,查看当前目录下文件个数,及各文件的大小,
要每隔5秒钟查看一次
如果手动执行的话,
要先输入 ls | wc -l (查看当前目录下,文件的个数)
然后再通过 du -sh * 来查看每个文件的大小
如果靠人工去看的话,查查都觉得很烦。怎么办呢
来写个定时执行的语句,
死循环方式:
while true
do
# 在这里添加你的循环体代码
ls | wc -l
du -sh .
sleep 2
done
如果用一行来写:
while true; do ls | wc -l; du -sh .; sleep 2; done
效果是一样的。看个人喜欢。上面多行的写法,一次性粘贴就行,不用执行符拼接。
如果想指定次数
count=0
while [ $count -lt 2 ]
do
# 在这里添加你的循环体代码
ls | wc -l
du -sh .
sleep 2
count=$((count + 1))
done
注意事项
1、这里定义 count 要判断 count < 2, 要用 -lt 来代替 " < "
2、count=0 赋值操作,等号左右不能有空格 (比如在命令行输入 a=1, 这样可以; a = 1 这样不行,带了空格,它会把 a 当成一个命令。。而不是一个变量
3、count=$((count + 1)) 这里 = 左右不能有空格,否则它识别不了 count