提问人:aronsommer 提问时间:2/23/2022 最后编辑:aronsommer 更新时间:2/24/2022 访问量:78
如何检查 bash 脚本的输出是否包含 Objective-C 中的某个字符串?
How check if output of bash script contains a certain string in Objective-C?
问:
如果 shell 脚本的输出包含字符串“Caddy 2 serving static files on :2015”,我想做点什么。这就是我目前所拥有的,但沙滩球只是在旋转。这似乎是因为我的 bash 脚本中的最后一个命令启动了服务器。bash 脚本中没有出口,因此它不会结束。bash 脚本的输出是正确的,我可以看到“Caddy 2 在 :2015 上提供静态文件”。但似乎这段代码只适用于一个有尽头的 bash 脚本。
如果有人想尝试,您可以在这里下载我在 bash 脚本中使用的可执行 caddy 文件: https://caddyserver.com/download
- (IBAction)localHost:(id)sender
{
// execute bash script to start server
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle] pathForResource:@"caddy-start" ofType:@""], nil]];
NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file = [pipe fileHandleForReading];
[task launch];
NSData *data = [file readDataToEndOfFile];
NSString *result = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(result);
NSString *string = result;
NSString *substring = @"Caddy 2 serving static files on :2015";
if ([string rangeOfString:substring].location != NSNotFound) {
NSLog(@"Yes it does contain that substring");
}
else if ([string rangeOfString:substring].location == NSNotFound) {
NSLog(@"No it does NOT contain that substring");
}
}
这是我的 bash 脚本:
#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "${DIR}"
pwd
#open http://localhost:2015
# kill server if already running
kill -9 $(lsof -ti:2015)
(./caddy_darwin_amd64 stop) &
(./caddy_darwin_amd64 file-server --listen :2015 --root Content/) &
答: 暂无答案
下一个:Obj C 中的编码
评论
echo Caddy 2 serving static files on :2015
[task launch];
NSLog(result);
(command) &
NSLog(result);
loadPage: