我喜欢有一个脚本,该脚本将在我撰写新博客文章时填写在前。过去,我使用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时,我想在此处进行相同的操作。这是我的Makefile中定义draft
规则的部分。我想我已经转义了所有变量,但仍然无法运行。有人可以解释我可能在哪里出问题了吗?
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是here,其中draft
仅执行原始的shell脚本。