gpt4 book ai didi

unix - 通过ant执行Shell脚本

转载 作者:行者123 更新时间:2023-12-04 02:42:09 25 4
gpt4 key购买 nike

我有一个名为 Call.sh 的 shell 脚本,它在内部调用其他脚本(即 .sh)并且对我来说工作正常。现在我想从 执行 Call.sh Ant 效用。我制作了一个调用 .sh 的 build.xml。但是其中一个脚本要求输入,但是由于进一步的操作失败,ant 没有给我提供输入的机会。请找到以下代码

Build.xml

<project name="Sample" default="info">
<target name="info">
<exec executable="/bin/bash">
<arg value="/full path/Call.sh"/>
<arg value="/tmp"/>
</exec>
</target>
</project>

调用.sh
    #!/bin/bash
echo "Begining the execution......"
sleep 1
sh ./input.sh
sh ./AutomateCom.sh
sh ./Clean.sh
echo "*****_______*****_______"

input.sh
    #!/bin/bash

echo "enter the Organization name"
read Orgname
echo "Orgname is : $Orgname"
sed "s/000/$Orgname/g" Final.sql >> ExecuteID.sql
echo "Organization name has been replaced with $Orgname"

当我运行 Ant 时:它连续运行......下面是我说 Ant 时的 o/p
[root@krog2-rhel5-64 Work]# ant
Buildfile: /root/test/Work/build.xml

info:
[exec] enter the Organization name
[exec] Orgname is :
[exec] Organization name has been replaced with

BUILD SUCCESSFUL
Total time: 0 seconds
......................................

我在运行 ./input.sh 时期望什么, Ant 应该以同样的方式要求我输入
[root@krog2-rhel5-64 Work]# ./input.sh
enter the Organization name
**yak**
Orgname is : yak
Organization name has been replaced with yak
However ant doesn't give me opportunity to prompt for the user input. Any suggestions.

最佳答案

我了解到您的问题已得到解答并已继续前进。但是,我想为后代指出一些事情。你为什么用 Ant ?看来你最好只用一个 shell 脚本。

不要执行 bash 脚本。您没有列出所有脚本的内容,而是 call.shinput.sh在 ant 中本地做是微不足道的。这将使您的构建脚本平台独立并整合日志记录。
您可以使用 input 直接从 ant 处理您的输入。任务

<input
message="Please enter organization name:"
addproperty="org.name"
/>

但是,我强烈建议您不要使用等待用户输入的构建脚本。您可以制作 org.name一个属性,然后在构建时在命令行上简单地指定它: ant -Dorg.name=yak
您不需要对 sql 文件进行查找替换,您可以在 sql 中使用变量并在执行时将它们传入。 (实现将依赖于数据库)

你的例子来自一个 root shell,这也伤害了我的灵魂。不要以root身份登录。

关于unix - 通过ant执行Shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com