web-dev-qa-db-ja.com

ワンライナーでコマンド出力を印刷して使用する方法は?

mktempの結果を引数としてコマンドに渡したい場合は、_gcc -o_としましょう。 gcc -o $(mktemp)を使用すると、結果が使用されますが、結果を理解する必要があります。

私が思いつくことができる唯一のものはgcc -o $(out=$(mktemp); echo $out)ですが、それはコンソールに値を出力しませんが、代わりに正しいafaikである引数値として使用されます。

mktempの結果をコンソールに出力する方法はありますか?.

これをスクリプトで解決することができます。提案したいワンライナーソリューションで知識を広げたいのですが。

Ubuntu 19.04のbashで使用したいのですが。

10
Karl Richter

tee/dev/tty

$ gcc -o $(mktemp | tee /dev/tty) hello.c
/tmp/tmp.UBSSnulNn2

$ /tmp/tmp.UBSSnulNn2
Hello, world!

関連:

18
steeldriver

gcc -o $(out=$(mktemp); echo $out)での切り替え:

out=$(mktemp); echo "$out"; gcc -o "$out" hello.c

...また、後で使用するために、パスを変数に残しておくと便利です。 (おそらく、出力でパスを見ただけでmktempのランダムな名前生成の美しさを賞賛したくないのではないでしょうか?そのパスで他の場所で使用したいでしょう。)

8
muru