如何在包管理器中处理多个命令行参数?我正在尝试编写一个包管理器,现在接受要安装的包让我很头疼。例如,用户想要安装包 x、y 和 z。现在我的代码将向一个函数发送 3 个不同的请求。我想一口气得到所有的包名。因此,例如,用户想要安装包 x、y 和 z,它将被处理,我的代码将向函数发送请求,说明它需要 x、y 和 z,并且该函数将立即开始工作。
这是我目前的实现......
case 'S':
switch (argv[1][2]) {
case 'u':
id = 1;
alfred("system", "update", "", id);
break;
case 'r':
id = 1;
alfred("system", "reload", "", id);
break;
case 'i':
if (argc - 2 != 0) {
// Loop until packages are complete.
packages = 2; // Starting point of packages = argv[2][0]
srand(time(NULL)); // Seed for random number
id = rand(); // Generate random number for id
argc = argc - 2 + 1; // argc minus the number of packages and plus 1
/* This is a very inefficent loop! */
/* Must get all targets and feed it to alfred */
while (packages <= argc) {
alfred("system", "install", &argv[packages][0], id);
packages++;
}
} else {
printf("Unrecognized format. Execute alfred -h for more information.\n");
}
break;
default:
printf("Unrecognized format. Execute alfred -h for more information.\n");
break;
}
break;