以“index.html”的方式组合多个脚本?

时间:2013-08-23 17:37:10

标签: unix scripting bin

如果脚本组是一个脚本,那么在unixesque(sh / bash / zsh)系统中是否有标准方式执行一组脚本 (想想 index.html)。重点是避免您通常会发现的其他帮助程序脚本,并使小程序保持足够自足且易于维护。

说我有两个(粗体)ruby脚本。

  

/ bin
/ bin / foo_master
/ bin / foo_master / main
  / bin中/ foo_master / helper.rb

现在当我执行 foo_master

  

seo @ macbook~ $ foo_master
[/ bin / foo_master / main]:制作   新朋友,但保持旧。
[/bin/foo_master/helper.rb]:一个   是白银和其他黄金。

3 个答案:

答案 0 :(得分:1)

如果您尝试执行此操作而不创建帮助程序脚本,那么执行此操作的典型方法就是执行两者(注意:我将使用: $;来表示shell提示符):

: $; ./main; ./helper.rb

现在,如果您尝试将两者的输出捕获到文件中,比如说,那么您可以将它们分组为带有括号的subshell,并捕获子shell的输出,就像它是一个单一命令,如下:

: $; (./main; ./helper.rb) > index.html

这就是你要追求的吗?我对你的最终目标有点不清楚。如果你想让它成为一个可重复的东西,那么人们可能想要创建一个包装器命令......但是如果你只想将两个命令作为一个命令运行,你可以做以上两个选项之一,它应该工作对于大多数情况。 (如果我错过了你想要的东西,请随意扩大这个问题。)

答案 1 :(得分:1)

我想出了如何以半标准投诉的方式做到这一点。

我在shell脚本中使用了eval语法来lambda在运行时评估$ PATH。所以在我的/etc/.zshrc

$REALPATH = $PATH
$PATH = $REALPATH:`find_paths`

其中find_paths是递归搜索$ PATH目录中的文件夹的函数(下面的伪代码)

  

($ PATH中的foreach路径=> ls -d - * /)



所以我们从这里开始:

  

seo @ macbook $ echo $ PATH
  / bin中/:在/ usr / bin中/

对此,自动化:

  

seo @ macbook $ echo $ PATH
  / bin中/:在/ usr / bin中/:/ bin中/ foo_master /

现在我只将主要名称重命名为“foo_master”并vo!自包含的可执行文件,我敢说“app”。

答案 2 :(得分:0)

是的,这很简单!

#!/bin/bash

/bin/foo_master/main
/bin/foo_master/helper.rb

将文件另存为foo_master.sh并在shell中输入:

seo@macbook ~ $sudo chmod +x foo_master.sh

然后运行类型:

seo@macbook ~ $./foo_master.sh

编辑:

在任何给定目录中提供index.html文件的原因是HTTP Server显式查找一个。 (在服务器配置文件中,您可以指定要查找服务器的文件名,如index.html,即index.php index.htm foo.html等)。因此它并不神奇。在某些时候,“帮助脚本”明确地寻找文件。我不认为写上面的脚本是你可以跳过的一步。