問題タブ [subshell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3644 参照

python - Python サブプロセス、サブシェル、およびリダイレクト

python subprocess モジュールでサブシェルとリダイレクトの魔法を使いたいのですが、うまくいかないようで、予期しないトークンについて不平を言うのは括弧です。たとえば、コマンド

cat <(head tmp)

サブプロセスに渡されると、これが得られます

0 投票する
1 に答える
432 参照

java - ruby バックティック、kernel.system、exec、コマンドが成功しない

ruby コードから Java プログラムを実行しようとしています。

私のコードは次のようなものです:

私の問題は、コマンドがどちらの方法でも正常に実行されないことです。%x、バッククォートがサブシェルで実行されることはわかっているため、おそらくいくつかの環境変数が欠落しています。ただし、Kernel.system、Kernel.exec が成功することを期待していました。

シェルに直接入力すると、コマンドは正常に実行されます。これをデバッグするのに何か助けはありますか?

ありがとう!

0 投票する
3 に答える
457 参照

apache - ラッパーを作成する方法 - サブシェルを回避する - apache2 書き換えマップまたはシェル スクリプトのスクリプト全般?

apache2 で外部書き換えプログラム (prg) を使用して書き換えマップを実行していますが、エラーが発生して終了する可能性があります。書き換えマップが実行されていない場合、システムは明らかに適切に機能しません。

そこで、マップ プログラム (php で記述) を実行し、終了した場合に再起動する単純なラッパー シェル スクリプトを開始したいと考えました。

シェルで手動で試してみると問題なく動作しますが、Web サーバーで起動すると動作しません。

...そして、stdin および stdout ファイルハンドルを介して書き換えエンジンと通信します。マップ関数の検索ごとに、標準入力の改行で終了する文字列として検索するためのキーを受け取ります。次に、検索された値を stdout の改行で終了する文字列として返すか、失敗した場合は 4 文字の文字列 ``NULL'' を返さなければなりません...

その理由は私にはかなり明確に思えます。最初のスクリプトは stdin を受け取りますが、sub スクリプトにリダイレクトしません。

execどうにかして、スクリプトの stdin/stdout を使用して記述子を定義し、適切にリダイレクトする必要があると思います。しかし、どうすればそれを行うことができますか?

0 投票する
4 に答える
5808 参照

bash - 引用符が埋め込まれたbashでの文字列拡張

問題:

次のシェルスクリプトコードは、期待される結果を生成しません。

期待される結果:

名前で作成された新しいデータベースzztest

実際の結果:

名前で作成された新しいデータベース$TARG_DB

質問:

このサンプルコードをどのように変更して$TARG_DB、補間または拡張し、期待される結果を得ることができますか?

0 投票する
3 に答える
9211 参照

bash - パイプを介してサブシェルから終了コードを取得する

wgetサブシェルプロセスから終了コードを取得するにはどうすればよいですか?

それで、主な問題はそれ$?が 0 に等しいということ$?=8です。

tee実際にはなくても動作します。

しかし、${PIPESTATUS}配列(そのケースに関連しているかどうかはわかりません)にもその値は含まれていません。

だから、私の質問は -サブシェルwgetを介して終了コードを取得するにはどうすればよいですか?tee

参考になれば、私の bash バージョンは4.2.20.

0 投票する
4 に答える
1750 参照

linux - このbashコードが機能しないのはなぜですか?

2行目で「a=b」が生成され、メインシェルのコンテキストで実行されると、a値が新しい変数になりますb。ただし、実際に表示されるのは(コマンドを手動で入力した場合)、2行目以降のエラーメッセージです。bash: a=b: command not found

どうしてこんなことに?

0 投票する
3 に答える
220 参照

sed - ターゲット置換を行う

サブシェルは「$@」の結果を取得していないようで、置換を行うものは何もありません。

0 投票する
1 に答える
1836 参照

bash - サブシェルを使用した「cd」コマンドのエイリアスが期待どおりに機能しない

bashのエイリアスについて学びました。私は次のように作成しました:

alias="cd $directory"

どこ$directoryで使用入力からです。別のシェル スクリプトでは、次のようにサブシェルを起動できます。

( bash )

これにより、サブシェルが表示されます。ここで を実行するcdと、エイリアス に移動しcd $directoryます。これは素晴らしいことであり、期待どおりに機能しているようです。

私が探しているのは、サブシェルが起動されたとき、cd が自動的に発生するためです。

( bash | cd )

サブシェルを起動し、ユーザーが入力した場所にcdすると考えていますが、機能し$directoryていません。これを機能させるにはどうすればよいですか?私も( bash -c cd)無駄に努力しました。

ありがとう。

0 投票する
6 に答える
56577 参照

bash - どのように呼び出されても、実行全体を中止する Bash 関数を作成する方法はありますか?

Bash 関数で「exit 1」ステートメントを使用してスクリプト全体を終了していましたが、正常に機能しました。

しかし、次のように呼び出しても機能しないことに気付きました。

サブシェルを作成し、「exit 1」がそのサブシェルを中止し、プライマリ シェルを中止しないことを理解しています....

しかし、どのように呼び出されても、実行全体を中止する関数を作成する方法はありますか? 実際の戻り値を取得する必要があるだけです (関数によってエコーされます)。

0 投票する
2 に答える
1056 参照

linux - サブシェルから標準出力を取得するには?

私はこのようなスクリプトを持っていますか?

メインシェルは情報を出力しませんでした。サブコマンドから出力を取得するにはどうすればよいですか?