TestArgv.nsh is a very simple shell script to test how the interpreter parses
the parameters. It uses ShellCTestApp.efi to dump the parameters passed from the
interpreter.

TestArgv.log is the desired output created using "TestArgv.nsh > TestArgv.log".

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu...@intel.com>
Cc: Jaben Carsey <jaben.car...@intel.com>
---
 ShellPkg/Application/ShellCTestApp/README.txt      |   5 ++
 ShellPkg/Application/ShellCTestApp/ShellCTestApp.c |  11 ++--
 ShellPkg/Application/ShellCTestApp/TestArgv.log    | Bin 0 -> 3320 bytes
 ShellPkg/Application/ShellCTestApp/TestArgv.nsh    |  64 +++++++++++++++++++++
 4 files changed, 75 insertions(+), 5 deletions(-)
 create mode 100644 ShellPkg/Application/ShellCTestApp/README.txt
 create mode 100644 ShellPkg/Application/ShellCTestApp/TestArgv.log
 create mode 100644 ShellPkg/Application/ShellCTestApp/TestArgv.nsh

diff --git a/ShellPkg/Application/ShellCTestApp/README.txt 
b/ShellPkg/Application/ShellCTestApp/README.txt
new file mode 100644
index 0000000..7814bb8
--- /dev/null
+++ b/ShellPkg/Application/ShellCTestApp/README.txt
@@ -0,0 +1,5 @@
+TestArgv.nsh is a very simple shell script to test how the interpreter parses
+the parameters. It uses ShellCTestApp.efi to dump the parameters passed from 
the
+intepreter.
+
+TestArgv.log is the desired output created using "TestArgv.nsh > TestArgv.log".
\ No newline at end of file
diff --git a/ShellPkg/Application/ShellCTestApp/ShellCTestApp.c 
b/ShellPkg/Application/ShellCTestApp/ShellCTestApp.c
index 8d3fa4c..08c830c 100644
--- a/ShellPkg/Application/ShellCTestApp/ShellCTestApp.c
+++ b/ShellPkg/Application/ShellCTestApp/ShellCTestApp.c
@@ -2,7 +2,7 @@
   This is a test application that demonstrates how to use the C-style entry 
point
   for a shell application.
 
-  Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD 
License
   which accompanies this distribution.  The full text of the license may be 
found at
@@ -40,10 +40,11 @@ ShellAppMain (
   )
 {
   UINTN  Index;
-
-  Print(L"ShellCTestApp.c:ShellAppMain called with %d parameters\n", Argc);
-  for (Index = 0; Index < Argc; Index++) {
-    Print(L"Argv[%d]: %s\n", Index, Argv[Index]);
+  if (Argc == 1) {
+    Print (L"Argv[1] = NULL\n");
+  }
+  for (Index = 1; Index < Argc; Index++) {
+    Print(L"Argv[%d]: \"%s\"\n", Index, Argv[Index]);
   }
 
   return 0;
diff --git a/ShellPkg/Application/ShellCTestApp/TestArgv.log 
b/ShellPkg/Application/ShellCTestApp/TestArgv.log
new file mode 100644
index 
0000000000000000000000000000000000000000..e76781ea0e4387cf97ad42d5ccbb8a72f99c8d61
GIT binary patch
literal 3320
zcmcha-EPxB5QWcmCEmeumCH&=6Q>ChNOt0IgFvXzn?fx_-5;r<5dp;01K+G=wZUFT
z4t8bPp6txdIXgS!+5Gvv(y4}eu8(@DK)Jr?M)ycZJiqFh4zz8t!R9;qGkw-KWlGU6
zxW|e#<(=u6YsOfniB5PQBgI;RVq;?^SS}e^XwK6tSG<Eqm-)Wa50KvKO0SS^b=kn>
z6wbzGjsFynkz<g8KXuqcuxCgU$8Cf(gF(t@#ybK%ak>~r3x3bglzc99*ns>FZui6^
z$5YB|TUqKjByMDk?-*&K5xNLzj@B?UxXl@z5|O#n4|!TFACSWa<TC!Y_MB+lG4nmr
z1~xH~C}NS~-y)KrwOE{h7&~bKTI_fvj?ozH63Z2AhFFbwM$EGH1msBnDAioEEVyN7
zH&4W%h`fKTRfc}sKo?v#BPKJi^;74>^b?g9C`41Yx6R&)JgoC}xQDkv=M_BguC@=X
z_VFub)Wt8{BYpw9>Dyh?wdWUj{k8Yy=e7?s%VdA_OxK=ax7AVIi9j!?v^V;o*Iex?
zci_HvU3V0JeYCINP<_-?Kz|&lkDlgVdws7rCUrUWuxkIe(mHWBeXox7|KwFjS1x)?
zS%r09qknC-&tLv^TVGjo`)hx_$9HL)bB_OC+-1c#^Us}awf4$0<PoR3?oX1t@GOE|
n*Y+;VK5A+g=2M;!t6UzR-HLtoXKr^DTjjC+kLHU16K3-lP8Y@4

literal 0
HcmV?d00001

diff --git a/ShellPkg/Application/ShellCTestApp/TestArgv.nsh 
b/ShellPkg/Application/ShellCTestApp/TestArgv.nsh
new file mode 100644
index 0000000..013ac12
--- /dev/null
+++ b/ShellPkg/Application/ShellCTestApp/TestArgv.nsh
@@ -0,0 +1,64 @@
+#/** @file
+#  This is a very simple shell script to test how the interpreter parses the 
parameters.
+#
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+#  This program and the accompanying materials
+#  are licensed and made available under the terms and conditions of the BSD 
License
+#  which accompanies this distribution.  The full text of the license may be 
found at
+#  http://opensource.org/licenses/bsd-license.php
+#
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
IMPLIED.
+#
+#**/
+echo -on
+set Var_EFCF356F_228C_47C2_AD0C_3B5DAC9A8CFA      ValueOfGuid
+set Sharp_E8528E46_A008_4221_8DE0_D5AB42A9C580    ^#
+set Quote_E95DEE8B_E3AA_4155_9ED5_6916394104FC    ^"
+set Var_ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE 
ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE
+alias ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE   ShellCTestApp
+
+#
+# '^' should escape all special characters (including space)
+#     but has no impact to non-special characters
+#
+ShellCTestApp ^^
+ShellCTestApp ^#
+ShellCTestApp ^%Var_EFCF356F_228C_47C2_AD0C_3B5DAC9A8CFA%
+ShellCTestApp ^"
+ShellCTestApp ^ 1
+ShellCTestApp ^ 
+ShellCTestApp ^1
+ShellCTestApp ^^^"
+ShellCTestApp ^^^
+
+#
+# '#' should be processed before %% replacement, and inside '"'
+#
+ShellCTestApp #%Var_EFCF356F_228C_47C2_AD0C_3B5DAC9A8CFA%
+#ShellCTestApp "#"
+ShellCTestApp %Sharp_E8528E46_A008_4221_8DE0_D5AB42A9C580%
+
+#
+# '%' should be processed before grouping parameters
+#
+ShellCTestApp "%Var_EFCF356F_228C_47C2_AD0C_3B5DAC9A8CFA% 
2%Quote_E95DEE8B_E3AA_4155_9ED5_6916394104FC%
+
+#
+# alias should be processed after %% replacement
+#
+%Var_ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE%
+
+#
+# '"' should be stripped, space inside '"' should be kept, 
+#
+ShellCTestApp "p   1"
+ShellCTestApp "p"1
+ShellCTestApp "p   1"e"x"""
+
+set -d Var_EFCF356F_228C_47C2_AD0C_3B5DAC9A8CFA
+set -d Sharp_E8528E46_A008_4221_8DE0_D5AB42A9C580
+set -d Quote_E95DEE8B_E3AA_4155_9ED5_6916394104FC
+set -d Var_ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE
+alias -d ShellCTestApp_EE6E8BC6_71A6_44A5_BED3_D8F901105CDE
+echo -off
\ No newline at end of file
-- 
1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to