如何将引用的参数作为单个参数处理?

时间:2019-04-17 04:50:23

标签: c shell

我正在制作一个从stdin接受输入的shell。

我正在尝试解析未套用,带引号的引数,其中包含匹配的单引号或双引号。 (可以与不带引号的参数混合)

我希望每个带引号的字符串都被视为一个单独的参数,因此我可以将其放入参数数组中。然后,我想尝试将所有参数保留在数组中。

这类似于C可执行文件在bash shell中获取参数的方式。

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;
}

有什么建议吗?

0 个答案:

没有答案