应用

应用

我有一个 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存在。

应用

现在,作为用户,我想输入oStudiesor oSports(这会失败)而不是 not ,并且当函数不存在时oiSports它应该自动运行。这是因为,大多数时候用户有兴趣打开普通的 Markdown 文件,并且只有当它们不存在时用户才想打开.用户不记得哪个文件夹中只存在index.md(例如Sports文件夹)。oiSportsoSportsindex.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; }

等等,然后让您的脚本在需要时覆盖这些函数。

相关内容