Day3:自动化脚本与 Lambda
·
今天主要分为两部分:
① Linux 自动化脚本实战
② C++ 语法进阶(函数对象与 Lambda)
一、Shell 实战:AutoManager 自动化脚本
今天的核心任务是写一个 自动编译与备份的脚本。
功能
-
自动创建
backup/日期目录 -
备份当前所有
.cpp文件 -
自动编译并执行
-
同时把结果写入日志文件
build.log
关键代码
#!/bin/bash
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_DIR="./backup/$DATE"
LOG_FILE="./build.log"
mkdir -p "$BACKUP_DIR"
for file in *.cpp; do
[ -f "$file" ] && cp "$file" "$BACKUP_DIR"
done
g++ *.cpp -o main >> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
./main | tee -a $LOG_FILE
else
echo "编译失败" >> $LOG_FILE
fi
学到的知识
-
mkdir -p:自动创建多层目录 -
chmod +x:给脚本执行权限 -
>>:追加输出到文件(会自动创建) -
tee -a:终端显示 + 同时写入日志
二、C++ 语法进阶:函数对象与 Lambda
函数对象
struct Adder {
template <typename T>
T operator()(T a, T b) { return a + b; }
};
Adder add;
cout << add(3, 5) << endl; // 输出 8
Lambda 表达式
auto add = [](int a, int b){ return a + b; };
cout << add(3, 5) << endl;
Lambda 是函数对象的简化写法,能捕获外部变量,更方便灵活。三、今天的小问题与收获
| 问题 | 解决 |
|---|---|
| 运行脚本时报 “Permission denied” | 用 chmod +x 文件名 解决 |
>> 没见过 | 原来会自动创建并追加写入文件 |
tee -a 不懂 | 可以同时输出到终端和日志文件 |
四、今日总结
Linux:能写出自动编译脚本、理解日志输出与权限。
C++:更理解了函数对象与 Lambda,知道它们在 STL、并发编程中常用。
更多推荐



所有评论(0)