gpt4 book ai didi

windows - cygwin 下 Windows 上 getArgs 的不正确行为

转载 作者:可可西里 更新时间:2023-11-01 11:58:47 25 4
gpt4 key购买 nike

我试图将引号中的星号作为命令行参数传递到我的控制台应用程序中,当我使用 System.Environment.getArgs 获取它时,我实际上得到了文件列表当前目录。这是错误的,因为我将星号括在引号中,所以不应替换引号中的文本。如何在 cygwin 下的 Windows 中获取没有此类替换的命令行参数?

最佳答案

如果用单引号括起来,'*' 它不会展开,但是两个引号会进入 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 -*
["-*"]

关于windows - cygwin 下 Windows 上 getArgs 的不正确行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com