makefile - 将草稿脚本从 bash 转换为 Make
问题描述
当我写新的博客文章时,我喜欢有一个脚本来填充前面的内容。过去,我使用 Bash 执行此操作,如下所示。
#!/bin/bash
# Set some variables
export site_path=~/Documents/Blog
drafts_path=~/Documents/Blog/_drafts
title="$1"
# Create the filename
title=$(awk '{print tolower($0)}' <<<"$title")
filename="$title.markdown"
file_path="$drafts_path/$filename"
echo "File path: $file_path"
# Create the file, Add metadata fields
cat >"$file_path" <<EOL
---
title: "$title"
layout: post
tags:
---
EOL
# Open the file in BBEdit
bbedit "$file_path"
exit 0
虽然不是最好的代码,但它可以完成工作。由于我已将其他脚本移至使用 Make,因此我想在这里做同样的事情。这是我定义draft
规则的 Makefile 部分。我想我已经逃脱了所有变量,但它仍然不会运行。有人可以解释我可能会出错的地方吗?
SITE_PATH=~/Documents/Blog \
DRAFTS_PATH=~/Documents/Blog/_drafts \
TITLE="$$1" \
TITLE="$$(awk '{print tolower($$0)}' <<<"$$TITLE")" \
FILENAME="$$TITLE.markdown" \
FILE_PATH="${DRAFTS_PATH}/$$FILENAME" \
FILE_PATH="$${FILE_PATH}" \
cat >"$${FILE_PATH}" <<EOL \
--- \
title: "$$title" \
layout: post \
tags: \
--- \
EOL \
# Open the file in BBEdit
bbedit "$${FILE_PATH}" \
exit 0
更新:作为参考,完整的 Makefile在这里简单draft
地执行原始的 shell 脚本。
解决方案
推荐阅读
- c# - 避免重写派生类的构造函数?
- ag-grid - 如果表格是自动高度,如何修复 ag-grid 标题?
- servicestack - ServiceStack 中 IAuthRepository 中所有集成功能的概述
- ember.js - 用于排序属性的 ember/avoid-leaking-in-ember-objects 错误
- c++ - 使用 C++ 创建大型二维动态数组时出现分段错误(核心转储)
- json - Json 没有正确反序列化
- sql-server - The Script Task Uses Version 15.0 that is not supported in the release of integration services
- python - 在二进制分类中,当在 .train() 模式下评估时,我的模型在我的测试数据上获得了高精度
- kotlin - 如何在 kotlin 中修复错误的构造函数参数
- spring-boot - 如何使用spring security允许spring boot maven的静态文件夹中的所有资源?