次のように定義するとしますfct
。
fct() {
echo words
read -n1 x
[ $x == q ] && exit
}
呼び出しは期待どおりに機能しますが、fct
出力をキャプチャする必要がある場合は機能しません。オンラインで検索した内容によると機能しますが、結果シェルは終了します。それは動作するので、同じプロセス、異なるコンテキストで実行され、シェルではなくコンテキストだけを終了します。var=`fct`
exit
exit
kill -s KILL $$
fct
=
exit
fct
出力をキャプチャし、exit
同じコンテキストで同じように終了するように呼び出すことができるメソッドはありますか?それとも強制終了以外にプロセスを停止する他の方法はありますか?
答え1
私はそれを考えた!
一時ファイルを介してストリームを渡すことができます! Linuxでは、/dev/shm
データがメモリに保持されるようにファイルを介して渡すことができます。関数で包むこともできます:
get_output() {
$1 > /dev/shm/bash_pipe
eval $2=`cat /dev/shm/bash_pipe`
rm /dev/shm/bash_pipe
}
その後、次のように使用できます。そしてget_output fct var
withの出力を使うことができます。fct
$var