我有一个 shell 脚本,它为每个 Markdown 文件创建一个函数(在来自 bashscript 文件中.bashrc
)以在编辑器中打开它。
例子:
ls /home/nikhil/Notes/Studies
Physics.md
Chemistry.md
Studies.md
index.md
ls /home/nikhil/Notes/Sports
Football.md
Cricket.md
index.md
如您所见,某些文件夹(例如 Studies)包含同名文件 (Studies.md) 和 index.md,而其他文件夹(例如 Sports)包含 index.md 但不包含 Sports.md
现在,我的 bash脚本创建以下函数
oPhysics(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Physics.md }
oChemistry(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Chemistry.md }
oStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Studies.md }
oiStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/index.md }
oFootball(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Football.md}
oCricket(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Cricket.md}
oiSports(){ ${Editor:-vim} /home/nikhil/Notes/Sports/index.md}
注意:oStudies
并且oiStudies
存在,而仅oiSports
存在。
应用
现在,作为用户,我想输入oStudies
or oSports
(这会失败)而不是 not ,并且当函数不存在时oiSports
它应该自动运行。这是因为,大多数时候用户有兴趣打开普通的 Markdown 文件,并且只有当它们不存在时用户才想打开.用户不记得哪个文件夹中只存在index.md(例如Sports文件夹)。oiSports
oSports
index.md
我怎样才能做到这一点?oiBlahBlah
我正在寻找的模式是如果用户调用的函数oBlahBlah
不存在则运行该函数。oBlahBlah
回复建议
制作别名不起作用,因为我不想oStudies
执行oiStudies
答案1
对不同问题的答案。如果用户想要编辑主 Markdown 文件并且只想编辑索引文件(如果索引文件不存在),为什么不编写函数来执行此操作呢?然后只要有这个oSports
功能就可以了。重构以在函数中包含公共代码。
# Internal edit markdown function
_emd(){
if [ -e "/home/nikhil/Notes/$1/$2.md" ]
then
${Editor:-vim} "/home/nikhil/Notes/$1/$2.md"
else
${Editor:-vim} "/home/nikhil/Notes/$1/index.md"
fi
}
oPhysics(){ _emd Studies Physics ; }
oChemistry(){ _emd Studies Chemistry ; }
oStudies(){ _emd Studies Studies ; }
oiStudies(){ _emd Studies index ; }
oFootball(){ _emd Sports Football ; }
oCricket(){ _emd Sports Cricket ; }
oSports(){ _emd Sports Sports ; }
oiSports(){ _emd Sports index ; }
答案2
情况并不明显,但一个简单的解决方案可能是:
首先像这样定义每个函数:
oStudies() { oiStudies; }
等等,然后让您的脚本在需要时覆盖这些函数。