bash - 如何将目录名称和日期附加为备份文件后缀?
问题描述
我需要制作一个脚本来备份文件,并且我希望将时间戳和基本文件名作为名称的一部分,以便于区分。
#!/bin/bash
filename=$(basename $(pwd))
echo $filename
output_dir="/home/backup/backup_$filename_$(date +%Y-%m-%d_%Hh%Mm%Ssec)/"
echo $output_dir
获得以下输出:-
bash-4.2$ ./backup_1.sh
test
/home/backup/backup_2018-08-21_10h44m10sec/
bash-4.2$
在 output_dir 名称文件名中,“ test ”不包括仅作为后缀添加的时间戳。预期输出为“ /home/backup/backup_test_2018-08-21_10h44m10sec/ ”
非常感谢任何建议。
解决方案
你的变量需要大括号
${filename}
用这个替换你的代码
output_dir="/home/backup/backup_${filename}_$(date +%Y-%m-%d_%Hh%Mm%Ssec)/"
使用当前代码,bash 正在尝试查找不存在的 ${filename_}。
更新代码:
#!/bin/bash
filename=$(basename $(pwd))
echo $filename
output_dir="/home/backup/backup_${filename}_$(date +%Y-%m-%d_%Hh%Mm%Ssec)/"
echo $output_dir
输出
test
/home/backup/backup_test_2018-08-21_11h02m55sec/
推荐阅读
- terraform - 创建后无法获取 Terraform 实例 IP 地址
- python - PyTorch nn.Sequential 和 nn.ModuleList 有什么区别?
- postgresql - Geopandas to_postgis 需要几个小时
- import - 成功安装 conda 后无法导入 Geopandas
- reactjs - AdditionalProps = {} 是什么意思?
- php - 我正在构建一个 API,但在比较数组时遇到了问题
- flutter - SingleTickerProviderStateMixin AppBar 错误
- java - Wildfly 21 中 GET 请求查询参数中的管道字符 (|) 时出现“ERR_HTTP2_PROTOCOL_ERROR”
- paypal - 是否可以在不接触我的贝宝账户的情况下将资金从一个贝宝账户转移到另一个账户,但付款发生时我会收到通知?
- tensorflow - tensorflow.js 二维输入?