shell脚本:自动批量执行命令

系统当前时间变量

date +%Y-%m-%d_%H:%M:%S

1. 批量自动执行命令

P.S. 今天有个任务,400多条指令需要一条条手动执行,一条执行完慢的需要7-8分钟,研究了个脚本解决。

  1. 所有需要执行的命令放到commands里面,下面是测试样例。使用的话把引号里的命令替换就行。如果命令很复杂带有双引号、括号、特殊字符,那就把commands的双引号换成单引号(这里是shell单双引号的区别,可以了解下)。
  2. 执行效果是:脚本开始执行第一条命令,等这条命令完全执行完再执行下一条,执行完后彩色打印输出到一个日志并提示,直到最后一条执行完。
#!/bin/bash
#author:        bigcat
#created time:  2023.11.01
#content:       test

#双引号里面放入需要执行的命令
commands=(
    #简单命令直接用双引号就行
    " ps -ef | grep redis "
    " ps -ef | grep nginx "
    " ps -ef | grep rocketmq "
    " ps -ef | grep elasticsearch "
    " ps -ef | grep tomcat "
    #命令很复杂带有双引号、括号、特殊字符,用单引号,省去转义
    'ffmpeg -i test-022-001"("test_112_1")".rvmb -c:vlibx264 -c:a aac -threads 5 -strict -2 test-022-001"("test_112_1")".mp4'
)

for cmd in "${commands[@]}"
do
    echo "正在执行命令:$cmd"
    eval "$cmd"
    echo -e "\033[36m |------------3------------|  \033[0m"
    echo -e "\033[36m |------------2------------|  \033[0m"
    echo -e "\033[36m |------------1------------|  \033[0m"
    #打印结果输出到test.log
    echo -e "\033[36m $(date +%Y-%m-%d_%H:%M:%S): 命令 $cmd 已执行完毕  \033[0m"
    echo -e "\033[36m $(date +%Y-%m-%d_%H:%M:%S): 命令 $cmd 已执行完毕  \033[0m" >> test.log
done
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只大萌新!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值