Bash

Bash:不明確的重定向

  • February 9, 2017

我正在嘗試使用 jstack 收集 Java 程序的轉儲,並且我嘗試了以下命令。但它的意思ambiguous redirect是我無法重定向到命令。

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

是否有任何解決方法可以在單行命令中實現執行緒轉儲,並將日期和 Java PID 附加到執行緒轉儲文件名?

您的命令替換輸出可能有空格,導致欄位拆分等。使用引號:

$ 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_

引用自:https://unix.stackexchange.com/questions/251610