将批处理文件转换为shell脚本文件

问题描述:

我有批处理文件,我不知道shell脚本。 有人可以帮助这里。 将批处理文件转换为shell脚本文件

 
     @echo off 
     echo "Program Name    :" %0 
     rem echo "Next param   :" %1 
     echo "Next param     :" "Username/Password" 
     echo "User Id     :" %2 
     echo "User Name     :" %3 
     echo "Request ID     :" %4 
     echo "File Name     :" %5 
     echo "Entity Name    :" %6 
     echo "Email Address    :" %7 
     echo "Extract ID     :" %8 
     echo "path name     :" %9

cd %9 echo "Process Output files" IF NOT EXIST C:\OraOutput GOTO MAPERROR IF EXIST o%8.out (COPY o%8.out %5.csv) ELSE echo "Output file does not exists" IF EXIST %5.csv (MOVE %5.csv C:\OraOutput\%5.cvs) ELSE echo "Could not move file to Share Drive" GOTO ENDPROCESS :MAPERROR echo "The Share Directory has not been mapped Contact your System Administrator" EXIT -1 :ENDPROCESS echo "Process finished goodbye"

谢谢。

+0

阅读任何[壳教程](http://www.grymoire.com/Unix/Sh.html)试着写剧本,带着一个具体的问题来到这里。 – khachik 2013-02-26 07:44:57

+0

当我看到这个问题时,在右边我看到很多类似的问题,你可以参考。 – FooF 2013-02-26 08:00:49

我假设或多或少的Bourne兼容外壳,如bash,因为这是最常见的。要开始,这里就是你需要为了改变你的批处理脚本的Bourne风格的shell脚本,了解一些不同之处:

  1. 第一个区别是,执行的命令,默认情况下不回应(尽管你可以改变这一点) 。
  2. 评论以散列字符#开头。
  3. cdechoexit也存在于Bourne兼容shell中。
  4. 要测试文件是否存在,可以使用[ -e文件名]
  5. IF声明变得if条件; then真正的语句; else虚假陈述; fi ,你可以有多个命令/用分号来代替真正的语句虚假陈述分开陈述。
  6. IF EXIST o%8.out (COPY o%8.out %5.csv) ELSE echo "Output file does not exists"布赫纳兼容的外壳看起来像

    # I am assuming %8 means parameter 8 for the script 
    if [ -e o$8.out ]; then cp o$8.out $5.csv; else echo "Output file does not exist"; fi 
    

    或替代压痕(分号可以用新的生产线来代替):

    if [ -e o$8.out ]; then 
        cp "o$8.out" "$5.csv" 
    else 
        echo "Output file does not exist" 
    fi 
    

    注意,我们也引用参数cp如此我们可以在参数中使用空格。

  7. 你可以通过少许重组摆脱goto。您可以参考这个堆栈溢出问题(假设bash或其他的Bourne shell脚本风格方言):Is there a "goto" statement in bash?