コマンドがあるとしましょう。
eval-some-language —-path=<filename>
私たちは次のことをしたいと思います:
eval-some-language —-path=“say hello world!
exit 3”
次の解決策は、1つのファイルに対して機能でき、stdinが他の目的には使用されない可能性があると思います。
eval-some-language —-path=“/dev/stdin” <<<“say hello ...”
これはすべてのコマンドに適用されますか?携帯性はどのくらいですか? (アップルシステム?)
別の方法がありますか?
更新:ファイルを実行可能にする必要がある場合、私の解決策、許可された答え、zshの=()も機能しません。 :(
答え1
この試み:
eval-some-language --path=<(echo "hello world")
<()はファイル記述子を生成し、それをコマンド出力にバインドしてから/ dev / fd / xxxに渡します。たとえば、
$ echo <(echo aaa)
/dev/fd/63
$ echo <(echo test) <(echo second test)
/dev/fd/63 /dev/fd/62
詳細については、「プロセスの置き換え」セクションを参照してください。man bash