2013-02-26 139 views
0

我有批處理文件,我不知道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

回答

0

我假設或多或少的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?
相關問題