1

コマンドライン引数としてアスタリスク記号を引用符で囲んでコンソールアプリに渡そうとしていますが、を使用して取得するとSystem.Environment.getArgs、実際には現在のディレクトリにあるファイルのリストが取得されます。これは間違っています。アスタリスクを引用符で囲んでいるため、引用符で囲まれたテキストに置き換えないでください。cygwinの下のWindowsでそのような置換なしでコマンドライン引数を取得するにはどうすればよいですか?

4

1 に答える 1

2

一重引用符で囲むと'*'展開されませんが、2つの逆コンマが結果に反映されるためgetArgs(以下を参照)、後で削除する必要があります。

Windowsで拡張される理由"*"は、スペースがあるため、引用符で囲まれたコンマがグロブ可能なファイル名の一部として正当であるためです。del "temp file *.dat"あなたはある時点でしたいかもしれません。

module ListArgs where
 import System.Environment
 main = getArgs >>= print

与える:

[1 of 1] Compiling ListArgs             ( ListArgs.hs, ListArgs.o )
Linking ListArgs.exe ...

D:\Files\Andrew\prog\haskell\utils>ListArgs.exe *
["HereDoc.hs","IOutils.lhs","SugaredApplicative.hs","ListArgs.exe","ListArgs.hi","ListArgs.hs","ListArgs.o"]

D:\Files\Andrew\prog\haskell\utils>ListArgs.exe "*"
["HereDoc.hs","IOutils.lhs","SugaredApplicative.hs","ListArgs.exe","ListArgs.hi","ListArgs.hs","ListArgs.o"]

D:\Files\Andrew\prog\haskell\utils>ListArgs.exe '*'
["'*'"]

D:\Files\Andrew\prog\haskell\utils>ListArgs.exe '*
["'*"]

D:\Files\Andrew\prog\haskell\utils>ListArgs.exe -*
["-*"]
于 2012-09-05T21:29:19.073 に答える