我有一个名为Call.sh的shell脚本,它在内部调用其他脚本(即.sh),对我来说工作正常.现在我想从ant实用程序执行Call.sh.我创建了一个调用.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>
Run Code Online (Sandbox Code Playgroud)
Call.sh
#!/bin/bash
echo "Begining the execution......"
sleep 1
sh ./input.sh
sh ./AutomateCom.sh
sh ./Clean.sh
echo "*****_______*****_______"
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
当我运行蚂蚁时:它不断运行....下面是我说蚂蚁时的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 …
Run Code Online (Sandbox Code Playgroud) 我必须检查文件的存在dir1
和dir2
.然后,递归删除它们,否则打印一些消息.这是我的代码:
if [ -d "dir1"] && [-d "dir2"]; then
echo "directory exists"
echo "deleting existing files...."
sleep 2
rm -r dir1
rn -r dir1
echo "exisitng files deleted!!"
else
echo "directory does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误的表达错误.
./check.sh: line 16: [: missing `]'
directory does not exist.
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
我试图通过myDeploy.sh导出变量,但导出未设置.当我回应它时,它不会回响.但是,当我在命令中明确设置变量时,它正确设置并回响.Below是我的代码的片段.
myDeploy.sh
#!/bin/bash
# export the build root
export BUILD_ROOT=/tibco/data/GRISSOM2
export CUSTOM1=/tibco/data/GRISSOM2/DEPLOYMENT_ARTIFACTS/common/MDR_ITEM_E1/rulebase
export CLEANUP=$BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common
cd $BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common
Run Code Online (Sandbox Code Playgroud)
当我回响时,echo $BUILD_ROOT
它并没有回应我的道路.但是当我在命令提示符上明确地这样做时
[root@krog3-rhel5-64 GRISSOM2]# export BUILD_ROOT=/tibco/data/GRISSOM2
Run Code Online (Sandbox Code Playgroud)
它设置得恰到好处并且也有回音.我错过了什么?