地形ファイルがあります。
terraform {
required_version = "1.3.5"
}
locals {
a = "foo"
b = "bar"
}
Bash端末では、次のことができます。
$ echo "local.a" | terraform console
"foo"
$ echo "local.b" | terraform console
"bar"
今やりたいことは、terraform console
バックグラウンドで実行されているプロセスを起動し、それにコマンドを提供することです。
これは私が試したものです(この回答に基づいてhttps://serverfault.com/a/815253):
$ mkfifo /tmp/srv-input
$ tail -f /tmp/srv-input | terraform console >>output.txt 2>&1 &
これにより、バックグラウンドプロセスが正しく開始されます。
$ ps -ax | grep terraform
6030 pts/0 Sl 0:01 terraform console
その後、次のように実行します。
$ echo "local.a" > /tmp/srv-input
出力ファイルがoutput.txt
空です。
$ cat output.txt
$
私が実行した場合:
$ echo "local.c" > /tmp/srv-input # invalid input
出力ファイルにoutput.txt
(予想される)エラーが含まれています。
$ cat output.txt
╷
│ Error: Reference to undeclared local value
│
│ on <console-input> line 1:
│ (source code not available)
│
│ A local value with the name "c" has not been declared. Did you mean "a"?
╵
[1]+ Exit 1 tail -f /tmp/srv-input | terraform console >> output.txt 2>&1
stdoutではなくstderrだけがログファイルにリダイレクトされるのはなぜですか?