【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

posted @ 2023-07-13 16:01  aaacarrot  阅读(147)  评论(0编辑  收藏  举报