ファイルを入力として要求するコマンドがありますが、ファイルから入力を取得して一時stdin
ファイルを作成したくありません。
私は次のことをしたいと思います:
#!/bin/bash
osadecompile /dev/stdin < input_file.scpt
ただし、これはI / Oエラーを引き起こす可能性があります。これはうまくいきますが、可能ですか?いいえ一時中間ファイルを使用しますか?
#!/bin/bash
AS_FILE=$(mktemp)
cat - > "$AS_FILE"
osadecompile "$AS_FILE"
rm "$AS_FILE"
推測しましたが、私はmacOSでバッシュ3.2。しかしzsh 5.3ソリューションも歓迎されます。
ベストアンサー1
を使用すると、zsh
次のことができます。
cmd =(cat)
=(...)
パイプの代わりに一時ファイルを使用する3番目の形式のプロセス交換はどこにありますか?
bash
5.1以下の場合、空行でzsh
終わらない入力(およびNULバイトを含まないbashの場合)に対して、次のことができます。
cmd /dev/fd/3 3<<< "$(cat)"
ここで、文字列(zshから)と同様に、ドキュメント(Bourneシェルから)はbashとzshの両方で(削除された)一時ファイルを介して実装されます。 macOS(Linuxではない)では、ファイルが一度だけ開くと仮定しますcmd
(その中で自由に検索できますが)。各オープンは、以前のオープンとファイルの同じ場所から始まるためですcmd
。場所はファイルの先頭にあると仮定します。
1 bashの動作は5.0から変更されました。ここでbashは一時ファイルを書き込むことができないようにし始めました。