Я должен написать оболочку, которая может интерпретировать двойные кавычки.Я написал базовую оболочку.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main ()
{
int i;
char * ligne;
char *tokens[100];
ligne=(char*)malloc(300);
printf("$ ");
fgets(ligne,256,stdin);
while (strcmp(ligne,"exit\n"))
{ i=0;
tokens[i]=strtok(ligne," \n");
while (tokens[i] != NULL) tokens[++i]=strtok(NULL," \n");
if (fork()==0)
{ execvp(tokens[0],tokens);
printf("Commande invalide\n");
exit(1);
}
wait(0);
printf("$ ");
fgets(ligne,256,stdin);
}
exit(0);
}
В оболочке linux: Когда вы вводите команду типа
$ echo "`a b`"
Оболочка интерпретирует пробелы и, следовательно,
a b
*В качестве файла берется 1009 *.
Я не вижу, как убрать двойные кавычки и оставить пробелы.Спасибо.