Bash:不明确的重定向

Bash:不明确的重定向

我正在尝试使用 jstack 收集 Java 进程的转储,并且我尝试了以下命令。但它说ambiguous redirect我无法重定向到命令。

 jstack -l `pgrep java` > /tmp/TD_`hostname`_`date`_`pgrep java`
-bash: /tmp/TD_`hostname`_`date`_`pgrep java`: ambiguous redirect

是否有任何解决方法可以实现在单行命令中获取 threaddump,并将日期和 Java PID 附加到 threaddump 文件名?

答案1

您的命令替换输出可能有空格,导致字段拆分等。使用引号:

$ echo foo > /tmp/TD_`hostname`_`date`_`pgrep java`
bash: /tmp/TD_`hostname`_`date`_`pgrep java`: ambiguous redirect
$ echo foo > /tmp/"TD_`hostname`_`date`_`pgrep java`"
$ ls /tmp/TD*
/tmp/TD_muru-arch_Sat 26 Dec 16:14:29 IST 2015_

相关内容