1
我在sshexec任務中遇到變量問題。 我的build.xml Ant腳本的樣子:螞蟻在sshexec中的bash腳本中的變量
<?xml version="1.0" encoding="UTF-8"?>
<project name="sshexecproject" basedir="." default="build">
<target name="build">
<sshexec
host="192.168.2.106"
username="root"
password="xxx"
commandResource="${basedir}/to_run.sh"
trust="true"
verbose="true"
failonerror="true"
/>
</target>
在to_run腳本我有兩個變量:
#!/bin/bash
name="Pink Panther"
export name2="Panther Pink"
echo "Name: "
echo $name
echo "Name with export: "
echo $name2
如果我在終端,我得到下面的輸出運行腳本:
$ ./to_run.sh
Name:
Pink Panther
Name with export:
Panther Pink
我們可以看到,一切正常。但是,如果我從螞蟻開始build.xml腳本我得到下面的輸出:
...
[sshexec] Authentication succeeded (password).
[sshexec] cmd : #!/bin/bash
[sshexec] cmd :
[sshexec] cmd : name="Pink Panther"
[sshexec] cmd : export name2="Panther Pink"
[sshexec] cmd :
[sshexec] cmd : echo "Name: "
[sshexec] Name:
[sshexec] cmd : echo $name
[sshexec]
[sshexec] cmd : echo "Name with export: "
[sshexec] Name with export:
[sshexec] cmd : echo $name2
[sshexec]
[sshexec] Disconnecting from ...
我們可以看到,在遠程服務器上運行此腳本創建一個空的回聲。變量名稱和名稱2未填充。爲什麼?
感謝您的回覆,我更新了我的問題,因爲問題仍未解決。 – user1791139
經過進一步的研究,'commandResource'是一個命令文件,其中的每一行執行爲'bash -c $ LINE',因此每個命令都有一個單獨的shell和上下文。你想要的是'command',它將一次執行整個腳本。 –
如果我將commandResource更改爲命令,我收到文件未找到錯誤。腳本必須先在服務器上使用才能使用它? – user1791139