【问题标题】:Launch dscutil in Objective-C在 Objective-C 中启动 dscutil
【发布时间】:2012-09-30 00:25:52
【问题描述】:

如何在 Objective-C 中使用dscl 并获得其输出?我想像在终端中一样传递的命令是:

dscl . -readall /Users UniqueID | awk '/^RecordName:/ {name=$2}; /^UniqueID: / {if ($2 > 500) print name}'

我知道如何使用 -xml 等参数启动 system_profiler,但我不知道如何在实际工作的地方传递这么长的字符串。

我知道 system_profiler 是 /usr/sbin/system_profiler,但是 dscl 呢?

【问题讨论】:

    标签: objective-c command-line terminal arguments dscl


    【解决方案1】:

    最好的办法是像启动一个 shell 脚本一样启动它。要么将其作为 shell 脚本粘贴到文件中,要么使用 NSTask 编写调用 /bin/sh 的命令行,将命令作为字符串传递以允许 sh 解析它。

    /bin/sh -c ".... your command string ...."

    【讨论】:

    • 已尝试:outFileData =[taskLauncher launchTask:@"usr/sh" withArguments: [NSArray arrayWithObjects:@"-c", @"dscl .-readall /Users UniqueID | awk '/^RecordName: /{name=$2}; /^UniqueID: /{if ($2 > 500) 打印名称}'", nil]];没用
    • 已尝试:outFileData =[taskLauncher launchTask:@"bin/sh" withArguments: [NSArray arrayWithObjects:@"-c", @"dscl .-readall /Users UniqueID | awk '/^RecordName: /{name=$2}; /^UniqueID: /{if ($2 > 500) 打印名称}'", nil]];它没有用。也试过 /user/bin/sh
    • 你真的去终端窗口并在那里尝试命令吗?显然不是。去做;当您让它在终端中工作时,然后将其复制/粘贴到您的代码中。 (顺便说一句:答案是/bin/sh
    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 2012-10-13
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多