2013-04-26 251 views
4

我通過使bash作爲默認應用程序打開.sh文件來執行Windows命令提示符處的shell腳本。我能夠運行任何沒有輸入參數的腳本,但對於那些有輸入參數的腳本,我得到錯誤「無法初始化設備PRN」。我可以看到參數沒有傳遞給腳本。我如何從Windows命令行將參數傳遞給shell腳本?Cygwin -Windows無法初始化設備PRN

這就是我在命令提示符下所做的。

 
X:> OracleSPExec.sh Procedure Database 
PROCEDURE= 
export PROCEDURE 
DATABASE= 
export DATABASE 

回答

8

似乎shell腳本使用print命令/內置,這可能與它打印文件PRN窗口print.exe衝突:設備。

1

可能存在兩個問題:

  1. 缺少家當#!

你必須在腳本的開頭添加這行:

#!/usr/bin/bash 
  • 文件開頭的Unicode BOM
  • 有時候,如果文件是用UTF-8和BOM寫的,shebang不能被解釋。刪除你的帖子前面的標題(隱藏?)字符。

    1

    我運行到這個問題,嘗試運行用來工作的一些當地發明標記腳本,但我有一個新的筆記本電腦,它的運行Windows 10的慶典中,我沒有按裝在cygwin的版本「T似乎有print的內置命令(它確實有printenvprintf外部命令),並有一個比System32其他沒有print命令:

    $ type print 
    print is hashed (/cygdrive/c/WINDOWS/system32/print) 
    
    $ type echo 
    echo is a shell builtin 
    

    作爲一個變通辦法,我在每個腳本的頂部附近添加此行:

    alias print=echo 
    

    而且消除了「無法初始化設備PRN」問題。這仍然很好,知道爲什麼這一點工作。

    +0

    別名對我很好! – Arcyno 2017-07-06 16:26:22

    相關問題