Я работаю над созданием оболочки, которая принимает входные данные от стандартного ввода.
Я пытаюсь проанализировать не вложенные , аргументы в кавычках, содержащие совпадения, одинарные или двойные кавычки.(можно смешивать с аргументами без кавычек)
Я хочу, чтобы каждая строка в кавычках рассматривалась как один аргумент, чтобы я мог поместить его в массив аргументов.Затем я хочу попытаться сохранить все аргументы в массиве.
Это похоже на то, как исполняемые файлы C принимают аргументы в оболочке bash.
EX:
mypersonalshell> first second "Hello World" fourth
results: [first, second, Hello World, fourth]
mypersonalshell> first second 'Hello World' fourth
results: [first, second, Hello World, fourth]
mypersonalshell> first "Hello ' World"
results: [first, Hello ' World]
Я предполагаю использовать комбинацию strtok в пробелах и кавычках, но не могу правильно использовать эту комбинацию.
Что у меня есть
int main(int argc, char* argv[]){
int cmdNum = 1;
char *input = NULL;
size_t len = 0;
ssize_t nread;
printf("mypersonalshell[%d]> ",cmdNum);
while((nread = getline(&input, &len, stdin)) != -1){
trim(input);
if ( strcmp(input, "") == 0){
continue;
}
char *inputArgs[10];
char *token;
token = strtok(input, " ");
while(token != NULL){
// add to string array and parse here
token = strtok(NULL, s);
}
printf("mypersonalshell[%d]> ",++cmdNum);
}
free(input);
return EXIT_SUCCESS;
}
Есть предложения?