繁体   English   中英

Objective-C 命令行参数以

[英]Objective-C command line arguments starting with <

我正在使用另一个问题中建议的标准用户默认值解析命令行参数,这在 99% 的情况下都有效,但是当参数以 < 开头时失败。

作品:

./prog -arg1 'hello<>asdf

不起作用:

./prog -arg1 '<hello'

当提供的参数以 < 开头时,[defaults stringForKey:key] 只返回 NULL。 基本上几乎所有东西似乎都可以工作,除非它以 < 开头,而且我认为它与 bash/escaping/pipes 没有任何关系。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        NSLog(@"arg1: %@", [defaults stringForKey:@"arg1"]);
//        NSLog(@"%@", [defaults dictionaryRepresentation]);
    }
    return 0;
}

我猜你已经发现了一个错误。 您报告的行为是发生了什么,快速检查可能的其他特殊字符也显示以破折号开头的值,例如./prog -arg1 '-fred' ,也不起作用 - 其他符号,如“>”, ';' 和“|” 做工作。

最少的文档没有为这种行为提供任何理由。

http://bugreport.apple.com报告错误

在您的代码中,您可以自己处理参数。 如果您希望使用 C 风格的字符串进行解析,您可以使用argcargv NSProcessInfo.processInfo.arguments会给你它们作为NSStringNSArray

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM