Jaben, The shell does not parse properly (my opinion) in some instances. That is one of the reasons I wrote a separate parser for the shell I maintain here at Dell.
One of the areas I feel the parsing is wrong is when an unescaped "#" is inside a quoted string: FS0:\> echo "This should # work." Command Error Status: Invalid Parameter FS0:\> echo "This should ^# work." This should # work. FS0:\> The first command is parsed as if this were the command line: FS0:\> echo "This should Command Error Status: Invalid Parameter FS0:\> I think many people would expect certain characters inside a quoted string, like "#" for example, to NOT need escaping. The only ones that should need escaping (again IMHO) are: ", ^, and %. Regards, Jim -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Carsey, Jaben Sent: Thursday, January 10, 2019 9:16 AM To: krishnaLee; [email protected] Subject: Re: [edk2] A question about shell-application's argument make system blocked; Is this in a script file? I don't remember how "comments" work on raw command lines where the user types them. -Jaben > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > krishnaLee > Sent: Wednesday, January 09, 2019 10:13 PM > To: [email protected] > Subject: [edk2] A question about shell-application's argument make system > blocked; > Importance: High > > Hi everybody, > I meet a question,a special arg can make system blocked,follow is my steps. > 1,go to uefi shell v2.2(uefi v2.70),run this application in QEMU-ovmf: > testapp.efi > 2,the output is "index:0,string:FS0:\testapp.efi" > > > 3,testapp.efi #abc. > 4,the output is same as step 2. ///< I had read the uefi shell specification > 2.2,the '#' is a comment remark,so I think it is ok. > > > 5 testapp.efi "#abc" > 6,the system blocked(dead). ///< I think it is a bug. > > > //follow is the testapp.efi source code: > EFI_STATUS > EFIAPI > UefiMain ( > IN EFI_HANDLE ImageHandle, > IN EFI_SYSTEM_TABLE *SystemTable > ) > { > EFI_STATUS status; > EFI_SHELL_PARAMETERS_PROTOCOL* param; > status=SystemTable->BootServices- > >HandleProtocol(ImageHandle,&gEfiShellParametersProtocolGuid,¶m); > if(status!=EFI_SUCCESS) > { > return0; > } > > > for(UINTN i=0;i< param->Argc;i++) > { > Print(L"index:%d,string:%s\n",i,param->Argv[i]); > } > > > return EFI_SUCCESS; > } > > > //test environment: > //QEMU v2.10.95 + edk2-2018-ovmf-x64. > //shell command line: > //"D:\qemu\qemu-system-x86_64.exe" -machine pc-q35-2.9 -pflash > "D:\qemu\bios\OVMF_x64_debug.fd" -serial stdio -hda fat:rw:G:\temp -net > none > //end > > > > > > > thanks, > krishna. > > > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

