每天学点shell [第一天]

本文介绍了bash中echo命令的基本用法,包括如何使用双引号和单引号解析变量,以及如何通过printf进行字符串格式化。同时展示了如何定义、赋值和使用变量,并讨论了PATH环境变量的作用。此外,还提供了获取字符串长度的方法,以及如何在命令中使用变量。最后,文章还提到了bash shell的特性,如颜色变化和特定的输出样式。
#!/bin/bash


echo 命令


echo "test";   双引号解析变量


echo 'test';   单引号不解析变量


echo "\"test"; 支持转义符号


-e 忽略转义符号  


好玩的东东 
echo -e "\e[1;31m This is read text \e [0m";
说是会变色,不过没看到效果哈。




printf 格式化字符串


printf "%-5s %-10s  %-4s\n" No name Mark
printf "%-5s %-10s  %-4.2f\n"  1 sarath 80.3456






%-5s  是指宽度为5的字符串替代,
-     表示左对齐 如果不指定默认右对齐
5     表示留给变量字符的宽度
\n    不用说了,程序员都知道换行嘛


变量:


定义:


   变量名=变量值
   var= "";
   var= wangdk;


=号两边不能有空格。这个和其它语言不同
var="" 给变量赋值空字时,必须加引号,反之不用加


要使作一个变量,需要加$


echo $var;   输出刚才那个变量。


echo ${var}


echo "my name is ${var}"; 


echo "my name is $var";


有点和PHP类似,哈


$PATH  是系统环境变量
export PATH ="$PATH:/home/usr/bin"
导入环境变量。


获取字符串长度
length=${#var}


echo ${#var};+
echo $length;




查看当前哪种shell
echo $SHELL


echo $0 


都能查看。











<think>好的,用户让我介绍一个常用的Shell脚本,并写出例子。首先,我需要确定用户的需求是什么。可能他们刚开始学习Shell脚本,想了解常见的应用场景和基本结构。我需要选择一个既实用又涵盖基础知识的例子,比如备份脚本,这样用户能学到文件操作、变量使用、条件判断和定时任务等知识点。 接下来,我得考虑脚本的结构。备份脚本通常包括定义变量、创建目录、执行备份命令、添加日志和错误处理。用tar命令打包备份文件比较常见,加上日期后缀方便管理。还要检查目标目录是否存在,如果不存在就创建,避免运行时错误。 然后,日志记录很重要,用户可能需要知道操作是否成功。使用echo输出信息到控制台和日志文件,同时检查命令的退出状态,如果出错就显示提示信息。最后加上完成提示,让用户知道脚本执行完毕。 还要考虑如何让用户扩展这个脚本,比如添加到crontab定时执行,或者增加删除旧备份的功能。这样用户可以根据需要进一步学习。确保使用中文解释清楚每个步骤,保持语言简洁明了,符合用户的学习水平。</think>以下是一个常用的Shell脚本示例及其详细说明,该脚本用于自动备份指定目录并保留最近7天的备份: ```bash #!/bin/bash # 备份脚本示例 # 功能:每日压缩备份指定目录,保留最近7天备份 # 配置参数 BACKUP_DIR="/data/important_files" # 要备份的目录 TARGET_DIR="/backups" # 备份存储目录 PREFIX="daily_backup" # 备份文件前缀 MAX_DAYS=7 # 最大保留天数 # 创建带日期的备份文件名 current_date=$(date +%Y%m%d) backup_file="${TARGET_DIR}/${PREFIX}_${current_date}.tar.gz" # 创建目标目录(如果不存在) mkdir -p ${TARGET_DIR} # 执行备份 echo "开始备份:$(date)" | tee -a ${TARGET_DIR}/backup.log tar -czf ${backup_file} ${BACKUP_DIR} 2>/dev/null # 检查备份结果 if [ $? -eq 0 ]; then echo "备份成功:${backup_file}" | tee -a ${TARGET_DIR}/backup.log else echo "备份失败!请检查目录和权限" | tee -a ${TARGET_DIR}/backup.log exit 1 fi # 清理旧备份 find ${TARGET_DIR} -name "${PREFIX}_*.tar.gz" -mtime +${MAX_DAYS} -delete echo "已清理超过${MAX_DAYS}天的旧备份" | tee -a ${TARGET_DIR}/backup.log echo "备份任务完成:$(date)" | tee -a ${TARGET_DIR}/backup.log ``` **脚本功能解析:** 1. **配置参数**(第4-7行) - `BACKUP_DIR`: 需要备份的目录路径 - `TARGET_DIR`: 备份文件存储目录 - `PREFIX`: 备份文件前缀 - `MAX_DAYS`: 备份保留天数 2. **文件名生成**(第10行) - 使用`date`命令生成当前日期字符串 - 组合生成形如`daily_backup_20230815.tar.gz`的文件名 3. **目录检查**(第13行) - 使用`mkdir -p`确保目标目录存在 4. **备份执行**(第16行) - 使用`tar`命令进行压缩打包 - `2>/dev/null`隐藏错误输出(可根据需要移除) 5. **结果检查**(第19-24行) - `$?`获取上条命令的退出状态 - 非0返回值表示执行失败 6. **清理旧备份**(第27行) - 使用`find`命令按修改时间删除过期备份 - `-mtime +7`表示7天前的文件 **使用方式:** 1. 保存为`backup.sh` 2. 添加执行权限:`chmod +x backup.sh` 3. 每日自动执行:可添加到crontab ```bash 0 2 * * * /path/to/backup.sh # 每天凌晨2点执行 ``` **扩展建议:** - 添加邮件通知功能 - 增加备份文件校验(MD5校验) - 支持远程备份到云存储 - 添加磁盘空间检查逻辑 这个脚本涵盖了Shell脚本编程的常见要素:变量使用、命令执行、流程控制、日志记录和计划任务设置,适合作为学习模板和实际应用的基础框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值