![将多个函数组合到一个 bash 脚本中](https://linux22.com/image/40934/%E5%B0%86%E5%A4%9A%E4%B8%AA%E5%87%BD%E6%95%B0%E7%BB%84%E5%90%88%E5%88%B0%E4%B8%80%E4%B8%AA%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD.png)
有没有办法可以将以下命令(最后一个是 zsh 函数)合并到单个 bash 脚本中?
find /path/to/directory/*/* ! -name "*.js" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type d -delete
for dir (/path/to/directory/*(/)) rm -f $dir/*.js(OL[2,-1])
答案1
如果您只是想编写一个依次执行命令的脚本,那么您有两个真正的选择:
- 编写一个 bash 脚本,对于最后一个命令,调用 zsh 来执行它(让一个 shell 调用另一个 shell)。
- 编写一个 zsh 脚本,依次运行四个命令,忘记 bash。
虽然 bash 是 Linux 上非常常见的 shell,但 bash 本身并没有什么神奇之处。您也可以轻松编写 zsh 脚本;#!
开头的行说明应使用哪个程序来执行脚本。
因此,如果您想使用上面的选项 2(我可能会这样做),只需创建一个以#!/bin/zsh
(或 zsh 恰好位于您系统上的任何位置)开头的纯文本文件,然后是命令。你会得到非常像这样的东西:
#!/bin/zsh
find /path/to/directory/*/* ! -name "*.js" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type d -delete
for dir (/path/to/directory/*(/)) rm -f $dir/*.js(OL[2,-1])
除此之外不应该有更多的事情。笔记:根据 zsh 的特性,您可能需要也可能不需要使用更多的引用。我更喜欢总是在正在扩展的变量周围加上“引号”,除非我积极的以防万一,不需要(即使这样也经常需要)。