#!/bin/bash # 执行后确保用Hugo生成的站点可以正常渲染,特别是数学公式。 # 先将`$$` # 转换成`{{</* katex [display] */>}}latex{{</* /katex */>}}` # 再执行 hugo [servere] -D 命令 # ./forgitee # 站点发布(生成静态文件) # ./forgitee server # 站点预览 function action(){ for file in `ls $1` do if [ -d $1"/"$file ] then action $1"/"$file elif [ "${file#*.}"x = "md"x ] then # 方便发布到gitee # 1)跳过行内代码: ```online code``` # 2)跳过行间代码: # ``` # multiline code # ``` # 3)多行公式变换: # $$ # multiline latex # $$ # 4)行内公式变换: $$online latex$$ # 5)行内公式变换: $online latex$ # 6)图片链接变换 sed -i '/```[^`]*```/n; /^```/ { :begin1; /^```.*\s*\n\s*```/! { $! { N; b begin1 }; }; n; }; /\$\$/ { :begin2; /\$\$[^$]*\$\$/! { $! { N; b begin2 }; }; }; s/\$\$\(\n[^$]*\n\)\$\$/{{< katex display >}}\1{{< \/katex >}}/g; s/\$\$\([^$]*\)\$\$/{{< katex >}}\1{{< \/katex >}}/g; s/\$\([^$]*\)\$/{{< katex >}}\1{{< \/katex >}}/g; s/\[\[\([^[]*\)|\([^[]*\)\]\]/[\2]({{< roamlink "\1" >}})/g; s/\[\[\([^[|]*\)\]\]/[\1]({{< roamlink "\1" >}})/g; ' $1"/"$file fi done } if [ -d "./content" ] then if [ "$1"x = "server"x ] then # 私有数据备份 rm -rd ../private rm -rd ../.obsidian mv ./content/private ../ mv ./content/.obsidian ../ fi echo "确保站点可解析,转换中..." action ./content echo "确保站点可解析,转换完成!" if [ "$1"x = "server"x ] then hugo server --disableFastRender -D else rm -rf public hugo -D fi # 复原 ./fortypora if [ "$1"x = "server"x ] then # 私有数据复位 mv ../private ./content/ mv ../.obsidian ./content/ fi else echo "此脚本只能在包含content的目录notes中执行" fi