2

スクリプトのグループが1つのスクリプトであるかのように、スクリプトのグループを実行するUnixesque (sh/bash/zsh)システムの標準的な方法はありますか? ( index.htmlを考えてください) . ポイントは、通常見つけられるような追加のヘルパー スクリプトを避け、小さなプログラムを自己完結型で維持しやすくすることです。

2 つの (太字の) Ruby スクリプトがあるとします。

/bin
/bin/foo_master
/bin/foo_master/メイン
/bin/foo_master/ helper.rb

foo_masterを実行すると

seo @macbook ~ $ foo_master
[/bin/foo_master/main]: 新しい友達を作りますが、古い友達はそのままにしておいてください。
[/bin/foo_master/helper.rb]: 1 つはシルバーで、もう 1 つはゴールドです。

4

3 に答える 3

1

ヘルパー スクリプトを作成せずにこれを実行しようとしている場合、これを行う一般的な方法は、両方を実行することです (注:: $;シェル プロンプトを表すために使用します)。

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

ここで、両方の出力をファイルにキャプチャしようとしている場合、たとえば、これらを括弧で subshel​​l にグループ化し、サブシェルの出力を単一のコマンドであるかのようにキャプチャできます。

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

これはあなたが求めているものですか?あなたの最終的な目標が何であるかについては少しわかりません。これを非常に繰り返し可能なものにしたい場合は、おそらくラッパーコマンドを作成したいと思うでしょう...しかし、2つのコマンドを1つとして実行したい場合は、上記の2つのオプションのいずれかを実行でき、機能するはずですほとんどの場合。(ただし、あなたが求めているものを見逃している場合は、自由に質問を拡大してください。)

于 2013-08-23T19:43:14.920 に答える
1

準標準的な苦情の方法でこれを行う方法を見つけました。

実行時に $PATH をラムダで評価するために、シェル スクリプトで eval 構文を使用しました。だから私の /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/

ここで、main の名前を「foo_master」に変更するだけです。自己完結型の実行可能ファイル、あえて「アプリ」と言います。

于 2013-08-23T22:46:19.290 に答える