2014-02-06 91 views
1

我正在嘗試執行「who -m」來自Apache ant的命令,但未成功。從螞蟻執行who -m

這裏是我的ant腳本:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="default" default="who.am.i"> 
    <target name="who.am.i"> 
     <exec executable="who" outputproperty="myOutput"> 
      <arg value="-m"/> 
     </exec> 
     <echo message="I am = ${myOutput}"/> 
    </target> 
</project> 

結果是空白。

[echo] I am = 

如果我不帶參數運行EXEC,它會顯示正確的結果:

 <exec executable="who" outputproperty="myOutput"> 
     </exec> 

[echo] host.name = gary  tty8   2014-02-03 12:04 (:0) 
[echo] gary  pts/0  2014-02-03 12:09 (:0) 
[echo] gary  pts/1  2014-02-03 12:23 (:0) 
[echo] gary  pts/2  2014-02-04 11:36 (:0) 
[echo] gary  pts/4  2014-02-05 13:27 (:0) 
[echo] gary  pts/7  2014-02-04 12:23 (:0) 
[echo] gary  pts/8  2014-02-06 12:44 (:0) 

如果我運行誰從終端-m命令會顯示什麼,我在尋找:

who -m 
gary  pts/8  2014-02-06 12:44 (:0) 

任何想法爲什麼螞蟻不接受-m參數?

回答

0

在這一天結束時,我決定去另一路線。

的〜/ .bashrc添加以下行:

who -m | awk '{print $5}' > ~/.whoami.out 

,並使其全球的我只是把它添加到的/ etc/.bashrc中

這將寫入〜 /.whoami.out文件每次登錄到遠程系統。

在我的ant腳本我讀這個文件的內容:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="default" default="default"> 

    <target name="test.who.key"> 
     <loadfile property="who.key" srcFile="${user.home}/.whoami.out" failonerror="false"/> 
     <condition property="who.cond"> 
      <isset property="who.key"/> 
     </condition> 
     <condition property="who.cond2"> 
      <not> 
       <isset property="who.key"/> 
      </not> 
     </condition> 
    </target> 

    <target name="init.who.key" depends="test.who.key" if="who.cond"> 
     <echo message="WHO EXIST"/> 
     <property name="whoAmI" value="${who.key}"/> 
    </target> 

    <target name="init.not.who.key" depends="test.who.key" if="who.cond2"> 
     <echo message="WHO DOES NOT EXIST"/> 
     <property name="whoAmI" value=""/> 
    </target>  

    <target name="default" depends="init.who.key, init.not.who.key"> 
     <echo message="whoAmI = ${whoAmI}"/> 
    </target> 

</project> 
2

嘗試執行作爲shell可執行文件來看它有幫助。它有助於用你想運行的精確的unix命令調用shell。

<exec executable="sh" outputproperty="myOutput"> 
    <arg value="who -m"/> 
</exec> 
+0

沒有成功試了一下,決定去的.bashrc路線 – javapenguin

0

你不提你有哪個Unix的味道,但在Solaris上我收到此錯誤消息時,我嘗試你的任務:在OSX

[echo] $ Must be attached to terminal for 'am I' option 

相反,它似乎工作,但是他說:

[echo] I am = mjc  tty?? Feb 7 02:35 

注意?? - 它也沒有找到該會話的終端。

我懷疑在你的情況下,它是由於與Solaris測試相同的原因而失敗 - 即由Ant分支的shell(即由java)不與你的終端會話相關聯。

(有可能是一種解決方法,但我沒有意識到這一點,如果有一個,它不可能是便攜式。)

+0

我是測試它奧姆我的Linux機器。當我在Solaris上運行它時,我也會得到:必須連接到終端以查找'我是'選項。 – javapenguin