如何在一行中打印和使用命令输出?

如何在一行中打印和使用命令输出?

我想将结果mktemp作为参数传递给命令,比方说gcc -ogcc -o $(mktemp)导致使用结果,但我需要弄清楚结果。

我唯一能想到的是gcc -o $(out=$(mktemp); echo $out),但这不会将值打印到控制台,而是用作参数值,据我所知,这是正确的。

有什么办法可以将结果mktemp打印到控制台。

我有能力在脚本中解决这个问题。我想通过您希望提出的单行解决方案来拓宽我的知识。

我想在bashUbuntu 19.04 上使用它。

答案1

tee与怎么样/dev/tty

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

$ /tmp/tmp.UBSSnulNn2
Hello, world!

有关的:

答案2

切换事物gcc -o $(out=$(mktemp); echo $out)

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

...这也方便地将路径保留在变量中以供以后使用。 (想必您不想只看到输出中的路径来欣赏mktemp随机名称生成的美丽,对吧?您希望该路径在其他地方使用它。)

相关内容