[英]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 风格的字符串进行解析,您可以使用argc
和argv
; 或NSProcessInfo.processInfo.arguments
会给你它们作为NSString
的NSArray
。
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.