常用shell脚本记录
系统当前时间变量
date +%Y-%m-%d_%H:%M:%S
1. 批量自动执行命令
P.S. 今天有个任务,400多条指令需要一条条手动执行,一条执行完慢的需要7-8分钟,研究了个脚本解决。
- 所有需要执行的命令放到
commands
里面,下面是测试样例。使用的话把引号里的命令替换就行。如果命令很复杂带有双引号、括号、特殊字符,那就把commands的双引号换成单引号
(这里是shell单双引号的区别,可以了解下)。 - 执行效果是:脚本开始执行第一条命令,等这条命令完全执行完再执行下一条,执行完后彩色打印输出到一个日志并提示,直到最后一条执行完。
#!/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