問題タブ [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.
bash - サブシェルを作成せずにコマンドの出力を変数に格納する方法[Bash
kshには、これを行うための非常に興味深い構造があり、この回答で詳しく説明しています: https://stackoverflow.com/a/11172617/636849
Bash 4.0 以降、この問題を解決す
kshには、これを行うための非常に興味深い構造があり、この回答で詳しく説明しています: https://stackoverflow.com/a/11172617/636849
Bash 4.0 以降、この問題を解決する組み込みのmapfile組み込みコマンドがあります:
http://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
しかし、奇妙なことに、プロセス置換では機能しないようです:
しかし、Bash v3.2 でこれを行う方法は?
そのようにサブクラスを使用することは本当に可能ですか? 私は次のようなことをしたでしょう:
...何を達成しようとするかによって異なります。
kshには、これを行うための非常に興味深い構造があり、この回答で詳しく説明しています: https://stackoverflow.com/a/11172617/636849
Bash 4.0 以降、この問題を解決す
kshには、これを行うための非常に興味深い構造があり、この回答で詳しく説明しています: https://stackoverflow.com/a/11172617/636849
Bash 4.0 以降、この問題を解決する組み込みのmapfile組み込みコマンドがあります: http://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
しかし、奇妙なことに、プロセス置換では機能しないようです:
しかし、Bash v3.2 でこれを行う方法は?
そのようにサブクラスを使用することは本当に可能ですか? 私は次のようなことをしたでしょう:
...何を達成しようとするかによって異なります。
bash - なぜサブシェルを避けるのですか?
サブシェルを回避するために何かをすることについて言及しているStack Overflowに関する多くの回答とコメントを見てきました。場合によっては、これには機能的な理由が示されますが (ほとんどの場合、サブシェル内で割り当てられたサブシェルの外部の変数を読み取る必要がある可能性があります)、回避すること自体が目的と見なされる場合もあります。例えば
ではなく tsv ファイルの 2 つの列の結合である
ため、どちらの方法でもサブシェルがあります。{ ... ; } | ...
( ... ) | ...
「目標はサブシェルを回避することだけです」と明示的に述べているファイルをコピーする Linux bash スクリプト
どうしてこれなの?スタイル/エレガンス/美しさのためですか? パフォーマンスのために(フォークを回避するため)?起こりそうなバグを防ぐためですか?他の何か?
bash - スクリプト内で「コマンド置換」と「サブシェル」を区別するにはどうすればよいですか?
( …サブシェル… )と$( …コマンド置換… )の 2 つのケースを区別する必要があります。
コマンド置換またはサブシェルで実行されることと、スクリプトで直接実行されることを区別する次の関数が既にあります。
出力例:
望ましい出力
しかし、コマンド置換とサブシェルを区別するようにコードを更新したいと思います。出力を生成したい:
trap
PSコマンド置換とサブシェルで実行すると、Bashは組み込みコマンドの動作が異なるため、これらのケースを区別する必要があります。
echoScriptRunWay | cat
PPSコマンドも気にします。しかし、私がここで作成したのは私にとって新しい質問です。
bash - 配管中にトラップは期待どおりに機能しますか?
問題のデモ用の最小限のコードは次のとおりです: http://pastebin.com/5TXDpSh5
出力
期待される出力
NB: OSX 10.9.2 bash (3.2.51) でテストしました - 他のバージョンの bash では、実際の予想される出力と同じ違いがあり、以下で説明します
bash - ( ) & と ( & ) の違いは?
bash:( &)
と( ) &
.
私が気付いた唯一の違いは、現在の tty 名を返すの(tty &)
に対し、「not a tty」を(tty) &
返すことですが、なぜですか?
例を挙げると、またはを実行する必要があります(setsid startx &)
か(setsid startx) &
?
shell - ksh --> サブシェル内から親シェル (メイン シェル) でコマンドを実行することは可能ですか?
メイン シェルのディレクトリを変更する簡単なスクリプトを作成しようとしています。サブシェル (上記参照) 内でディレクトリを変更する作業を行っていますが、明らかにスクリプトの実行が完了すると、外側のシェルに戻り、元のディレクトリに戻ります。
サブシェル内から外部シェルにコマンドを渡すことは可能ですか? 外部シェルに cd コマンドを渡すことはできますか?
たとえば、私が実行した場合:
ディレクトリを次のようにしたい:
一旦外殻に戻ります。
tee - ティーの終了ステータス>(...)
私は実行しています:
Command2はgrepの終了ステータスに基づいて実行されますが、現在の構成ではteeの結果に基づいて実行されています。
私の知る限り、pipefail と pipestatus はここでは機能していません (間違っている場合は修正してください)。
アレクセイの回答に基づくオリジアンの質問への修正
も試しCommand1 | tee >(grep sth || Command2)
ましたが、これは元の質問で機能しますが、サブシェルでテストのステータスを設定しようとしているためです。ex、そして後で私のコードの他のチャンクでResultCommand 1 | tee>(grep sth || Result="PASSED")
にアクセスできます。だから私はまだ問題があります。
ありがとう