2012-03-15 17 views
2

関連する.shファイルをbashに関連付けました。だから私は正常にWindowsのコマンドプロンプト内からbashスクリプトを実行することができます。cygwinのbashスクリプトは引数を受け取りません

問題は、コマンドライン引数をWinodwsコマンドラインからbashスクリプトに渡すことができないことです。

私が最初にbashに行ってスクリプトを実行すると、コマンドライン引数が正常に処理されます。だから、

myscr.shが続い

c:\> myscr.sh a1 a2 
Args , 

が、bashのからの場合:

$ ./myscr.sh a1 a2 
Args a1, a2 

任意の提案ですか?

+0

ペーストした出力が矛盾しているように見えますが、bashは "Args a1、a1"を出力し、 "Args a1、a2"を出力しません。 '$#'のエコーを加えて値をチェックするのはなぜですか?また、Windows上で 'bash myscr.sh a1 a2'を試してみると、あなたが得たものを確認することができます –

+0

スクリプトの先頭に#!...行がありますか?はいの場合は、私たちに見せてもらえますか?なぜなら、実際にあなたのスクリプトを実行しているbashは、bashから呼び出すときでもないからです。 (たとえば、1行目が#!/ usr/bin/pythonの場合、./myscr.shを呼び出すと/ usr/bin/python myscr.shが呼び出されます)(Unixサーバのサンプルですが、Windowsと同じ考え方) – huelbois

+0

訂正してくれてありがとう。 bash myscr.shも動作せず、$#の出力は '0'です。シバンも含まれていますが、簡潔に省略されました。 – Ayman

答えて

2

これは関連する問題であることが判明しました。

C:\> assoc .sh 
.sh=sh_auto_file 

C:\> ftype sh_auto_file 
sh_auto_file="C:\cygwin\bin\bash.exe" "%1" 

これは間違っていました。 paramsをbashに渡すことはありませんでした。それを修正するには、ftypeに%*を追加してください。

C:\> ftype sh_auto_file="C:\cygwin\bin\bash.exe" %1 %* 

すべてのパラメータが渡されます。

関連する問題