将多个函数组合到一个 bash 脚本中

将多个函数组合到一个 bash 脚本中

有没有办法可以将以下命令(最后一个是 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

如果您只是想编写一个依次执行命令的脚本,那么您有两个真正的选择:

  1. 编写一个 bash 脚本,对于最后一个命令,调用 zsh 来执行它(让一个 shell 调用另一个 shell)。
  2. 编写一个 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 的特性,您可能需要也可能不需要使用更多的引用。我更喜欢总是在正在扩展的变量周围加上“引号”,除非我积极的以防万一,不需要(即使这样也经常需要)。

相关内容