代码之家  ›  专栏  ›  技术社区  ›  alexyorke

运行shell脚本objective-c的最简单方法

  •  0
  • alexyorke  · 技术社区  · 16 年前

    我是objective-c新手,想知道如何以objective-c最简单的方式运行shell脚本。我不关心任何输出。我试过system()、exec()和execl()以及一个NSTask。由于某些原因,这些方法不起作用。。。这是我正在尝试运行的shell脚本:

    "mount_webdav http://idisk.mac.com/idisk_username/ /Volumes/idisk_username"
    

    它将在applescript中工作,我已经创建了挂载点目录。上面所有的方法都不起任何作用,或者由于某种奇怪的原因导致应用程序崩溃。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Peter Hosey    16 年前

    如果可以,不要使用shell脚本。它们是在参数化脚本时引入严重错误的好方法(例如。, mount_webdav %@ %@ ).

    fork / exec 直接,或(在Python中)子流程模块。这三个参数将作为数组传递,而不是作为单个字符串传递。

        2
  •  2
  •   TechZen    16 年前

    NSArray *args=[NSArray arrayWithObjects:@"http://idisk.mac.com/idisk_username/",@"/Volumes/idisk_username",nil];
    NSTask *mountTask=[[NSTask alloc] init];
    [mountTask setLaunchPath:@"/sbin/mount_webdav"];
    [mountTask launch];
    

    首先从命令行测试所有完整的命令路径和参数。我没有使用mount_webdav,但我认为它需要的参数比您提供的要多。

        3
  •  1
  •   Johan Kool    16 年前

    NSTask