2012-06-29 18 views
2

我已阅读其他线程enter link description here讨论.bat L/unix转换,但没有一个令人满意。我在编写自己的脚本时也尝试了很多黑客类型的方法。如何将Example.bat更改为Example.pl?

我有下面的example.bat脚本,它代表了我想在UNIX上运行的那种脚本。

代码:

echo "Example.bat" 

perl script1 param.in newParam.in 

perl script2 newParam.in stuff.D2D stuff.D2C 

program.exe stuff.D2C 

perl script3 stuff.DIS results.out 

我的问题是我不知道如何处理在Unix bash shell中的Perl和Program.exe文件。我曾尝试将它们放入系统()中,但这并不奏效。有人可以帮帮我吗? 谢谢!

+0

请包括您已经编写的代码和它返回的错误。 – Dancrumb

+1

为什么你不使用shell脚本?无论如何,.exe都是你的问题。 –

+0

以上所有,我知道,我知道。我很感激你问这一点。问题是,当我运行上述,它在Windows中工作。但是,当我在我的MacOSX上使用bash时,它会“运行”,但仅报告不正确的数据。所以它看起来不错,报告没有错误,只是搞砸了。因此,我相信我需要手动将它转换为可以在Unix上运行的perl脚本。谢谢。 :-) – GeekyOmega

回答

2

前提是你有一个可执行文件名为program.exe某处你$PATH(你也可能— Unix的可执行文件不必在.exe结束,但没有说他们不能),你粘贴代码一个有效的shell脚本。如果你将它保存在一个文件名为,说,example.bat,您可以通过键入

sh example.bat 

到shell提示符下运行它。

当然,Unix shell脚本通常给后缀.sh —或者根本没有后缀—而不是.bat。另外,如果你想你的脚本是可执行的直接,通过键入只是

example.sh 

而非sh example.sh,你需要做三件事情:

  1. 启动脚本以“认领”行:与#!和完整路径要使用运行它(例如/bin/sh为基本的Bourne shell)命令解释程序开头的行,像这样:

    #!/bin/sh 
    
    echo "This is a shell script." 
    
    # ... more commands here ... 
    
  2. 使用chmod命令将脚本标记为可执行文件,例如,

    chmod a+rx example.sh 
    
  3. 把你的脚本放在你的$PATH的某处。在Unix上,默认路径通常不会包含当前目录.,因此只能通过输入名称来执行当前目录中的程序。然而,您可以通过指定显式路径来运行它们,例如,即

    ./example.sh # runs example.sh from the current directory 
    

    要找出您的$PATH是什么,只需键入echo $PATH到外壳。