Shell:文字列をファイルとしてコマンドに供給できますか?

Shell:文字列をファイルとしてコマンドに供給できますか?

コマンドがあるとしましょう。

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

おすすめ記事