在我看来,这是一个非常无知的问题,但这真的让我烦恼。我在C中编写一个简单的shell,我希望以与其他shell相同的方式实现用户输入,或者至少bash如何实现(从未使用过其他shell)。如果输入带有随机空格的命令,则它仍然可以运行命令:
离。
ls -1
显然strtok()
在分离命令和args时不会对此工作......
bash如何做到这一点?我应该搜索数千行源代码吗?
由于
答案 0 :(得分:2)
在解析命令时,可以跳过空格:
while(*p==' '||*p=='\t') ++p;
答案 1 :(得分:0)
空格不是问题。您可以删除所有不是necesery的空格。 但我不确定shell是这样做的。我认为shell可以搜索输入的字符串中的所有选项。示例
ls -a -l and ls -l -a
是一样的。也许更好的是,如果你将搜索所有可能的选项,或逐步解释所有字符。例如,首先搜索所有“ - ”,然后在“ - ”
之后解释选项