【脚本】 【Linux】循环执行命令

loop.sh

#!/bin/bash

if [ "" = "$1" ]; then
    echo '用法: ./loop.sh 命令内容 时间间隔(毫秒) 循环次数(小于0表示无限循环)'
    echo '示例: ./loop.sh "ps -ef" 1000 10'
    exit 0
fi

interval=1000
if [ "" != "$2" ]; then
    if echo "$2" | grep -q "^[0-9]*$"; then
        interval=$2
    else
        echo "第2个参数必须为数字"
        exit 0
    fi
fi
interval=$(echo "scale=3; $interval/1000" | bc)

count=0
if [ "" != "$3" ]; then
    if echo "$3" | grep -q "^[0-9]*$"; then
        count=$3
    else
        echo "第3个参数必须为数字"
        exit 0
    fi
fi

echo "[`date +"%Y-%m-%d %H:%M:%S"`] 开始"
echo

if [ $count -gt 0 ]; then
    for((i=1;i<=$count;i++)); do
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] 执行第[$i]次"
        bash -c "$1"
        if [ $i -lt $count ]; then
            sleep $interval
        fi
    done
else
    i=1
    while true
    do
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] 执行第[$i]次"
        bash -c "$1"
        sleep $interval
        i=$(expr $i + 1)
    done
fi

echo
echo "[`date +"%Y-%m-%d %H:%M:%S"`] 结束"

用法: ./loop.sh 命令内容 时间间隔(毫秒) 循环次数(小于0表示无限循环),当命令内容存在空格时,需要用双引号包含。
示例:

./loop.sh ls 1000 10
./loop.sh "ps -ef"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值