我在sshexec任务中的变量有问题。我的build.xml蚂蚁脚本看起来像:
<?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未填充。为什么?
更改此行:
commandResource="${basedir}/to_run.sh"
to
command="${basedir}/to_run.sh"
导致以下结果:
[sshexec] Authentication succeeded (password).
[sshexec] cmd : /data/tmp/anttest/to_run.sh
[sshexec] Name:
[sshexec] Pink Panther
[sshexec] Name with export:
[sshexec] Panther Pink
commandResource
获取带有命令列表的资源文件,并使用bash -c $LINE
单独执行每行,因此定义的任何变量仅在同一行上有效。command
在同一外壳中执行整个脚本。