我想讓這個shell解析。如何讓程序以某種方式實現解析,以便引用的命令將根據開始和結束引號進行解析,並將其視爲一個令牌?在我打印出令牌的第二個while循環期間,我想我需要提供某種if語句,但我不太確定。任何意見/建議,不勝感激。如何讓這個shell在C語句中用引號分析它們?
#include <stdio.h> //printf
#include <unistd.h> //isatty
#include <string.h> //strlen,sizeof,strtok
int main(int argc, char **argv[]){
int MaxLength = 1024; //size of buffer
int inloop = 1; //loop runs forever while 1
char buffer[MaxLength]; //buffer
bzero(buffer,sizeof(buffer)); //zeros out the buffer
char *command; //character pointer of strings
char *token; //tokens
const char s[] = "-,+,|, ";
/* part 1 isatty */
if (isatty(0))
{
while(inloop ==1) // check if the standard input is from terminal
{
printf("$");
command = fgets(buffer,sizeof(buffer),stdin); //fgets(string of char pointer,size of,input from where
token = strtok(command,s);
while (token !=NULL){
printf(" %s\n",token);
token = strtok(NULL, s); //checks for elements
}
if(strcmp(command,"exit\n")==0)
inloop =0;
}
}
else
printf("the standard input is NOT from a terminal\n");
return 0;
}
我不會使用'strtok',而是親自手動編寫解析。查看現有免費軟件shell的源代碼,例如'sash'或'bash' –
如果您仍然需要使用'strtok()',則可以通過在*** ***字符上進行標記來完成。 – ryyker