我使用Ubuntu 16.04,我有一个本地化文件,该文件可以执行许多文件,是我将自己的GitHub项目下载到我的机器后获得的。
该文件包含一个Bash脚本,名为localize.sh
。我通过的子会话运行它~/${repo}/localize.sh
。
该文件包含许多行,所有行均具有相同的基本模式(请参见下文),以在子会话中执行所有相关文件。
这是该文件的实际内容:
#!/bin/bash
~/${repo}/apt/security.sh
~/${repo}/apt/lemp.sh
~/${repo}/apt/certbot.sh
~/${repo}/apt/misc.sh
~/${repo}/third-party/pma.sh
~/${repo}/third-party/wp-cli.sh
~/${repo}/conf/nginx.sh
~/${repo}/conf/php.sh
~/${repo}/conf/crontab.sh
~/${repo}/local/tdm.sh
可以注意到重复的~/${repo}/
模式。
这不是一个大问题,但是减少这些多余的字符仍然会很好,因为此文件应该变得更大。
实现DRY的最简单方法是什么(不要重复自己的代码版本?
在这种情况下,我个人不想使用一条长行。
编辑:原则上,除了中列出的文件外,列出的目录中没有,也不应有任何其他文件localize.sh
。
同样,名称localize.sh
和调用文件的操作可能localization
是一种不好的方法。在旁注中,如果您认为它不好,请批评我。
根据马克的答案,我认为最短的解决方案是这样的:
$ myPath="$HOME/$repo"; find ${path} -type f -iname "*.sh" -exec {} \;
file_1
file_2
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句