shell脚本每日一练1

华子目录

题目

  • 写一个脚本,遍历/data/目录下的所有txt文件,将这些txt文件做一个备份,备份的文件名增加一个年月日后缀(比如将aming.txt备份为aming.txt_20231001

环境准备

bash 复制代码
[root@shell data]# echo file1 > file1.txt
[root@shell data]# echo file2 > file2.txt
[root@shell data]# echo file3 > file3.txt
[root@shell data]# mkdir dir1

[root@shell data]# ls -F
dir1/  file1.txt  file2.txt  file3.txt

shell脚本编写

bash 复制代码
[root@shell ~]# cat shell1.sh
#!/bin/bash
time=$(date "+%Y%m%d")

for i in `find /data/ -type f -name "*.txt"`
do
        echo "正在备份$i文件"
        cp ${i} ${i}_${time}
done

测试

bash 复制代码
[root@shell ~]# bash shell1.sh
正在备份/data/file1.txt文件
正在备份/data/file2.txt文件
正在备份/data/file3.txt文件
bash 复制代码
[root@shell ~]# cd /data/
[root@shell data]# ls
dir1       file1.txt_20241021  file2.txt_20241021  file3.txt_20241021
file1.txt  file2.txt           file3.txt

总结

变量的值${变量}

一般情况下,$var${var}没有区别的,但是用${ }比较精确界定变量名称的范围

  • 当你要显示变量值随意字符就会出错
  • 这时应该用变量的原形:${var},即是加一个大括号来限定变量名称范围
bash 复制代码
[root@shell ~]# hua='ajax'
[root@shell ~]# echo $hua
ajax
[root@shell ~]# echo ${hua}
ajax
[root@shell ~]# echo ${hua}_${hua}
ajax_ajax
[root@shell ~]# echo ${hua}+${hua}
ajax+ajax

date

bash 复制代码
[root@shell data]# date "+%Y/%m/%d"
2024/10/21
相关推荐
一把年纪学编程9 分钟前
linux 安装 mysql记录
linux·运维·mysql
清寒敲代码12 分钟前
Mysql的备份还原
运维
Mryan200535 分钟前
如何创建一个自行设计的nginx的Docker Image
运维·nginx·docker·容器
AI服务老曹44 分钟前
机器学习算法能够自动学习并使用不同条件下的变化趋势,确保预测结果的准确性的智慧地产开源了
运维·学习·开源·音视频
小草cys1 小时前
ubuntu20.04升级成ubuntu22.04
linux·运维·服务器
Linux内核拾遗1 小时前
使用kvmtool运行和调试Linux内核
linux·kvm
前端小菜鸟一枚s2 小时前
如何使用 Bash 脚本自动化清理 Nacos 日志文件
linux
kfepiza2 小时前
Linux的/proc/sys/net/ipv6/conf/(all,default,interfaceName具体网络接口名称)/ 笔记250405
linux·tcp/ip
charlie1145141912 小时前
IMX6ULL学习整理篇——Linux使用更现代的GPIO操作简单设备
linux·嵌入式硬件·学习·教程·mpu·gpio子系统·pinctl
夏天里的肥宅水2 小时前
Windows连接服务器Ubuntu_MobaXterm
运维·服务器·ubuntu