From 5b86777f9d0ee112b9555002ffe2d834510a25db Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Wed, 22 Jul 2020 17:32:00 -0700 Subject: [PATCH] Warn about non-POSIX case modification expansions (fixes #1977) --- src/ShellCheck/Checks/ShellSupport.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ShellCheck/Checks/ShellSupport.hs b/src/ShellCheck/Checks/ShellSupport.hs index 6dd2d39..1f87868 100644 --- a/src/ShellCheck/Checks/ShellSupport.hs +++ b/src/ShellCheck/Checks/ShellSupport.hs @@ -178,6 +178,8 @@ prop_checkBashisms93 = verify checkBashisms "#!/bin/sh\necho $(( 10#$(date +%m) prop_checkBashisms94 = verify checkBashisms "#!/bin/sh\n[ -v var ]" prop_checkBashisms95 = verify checkBashisms "#!/bin/sh\necho $_" prop_checkBashisms96 = verifyNot checkBashisms "#!/bin/dash\necho $_" +prop_checkBashisms97 = verify checkBashisms "#!/bin/sh\necho ${var,}" +prop_checkBashisms98 = verify checkBashisms "#!/bin/sh\necho ${var^^}" checkBashisms = ForShell [Sh, Dash] $ \t -> do params <- ask kludge params t @@ -407,6 +409,7 @@ checkBashisms = ForShell [Sh, Dash] $ \t -> do (re $ "^![" ++ varChars ++ "]+[*@]$", "name matching prefixes are"), (re $ "^[" ++ varChars ++ "*@]+:[^-=?+]", "string indexing is"), (re $ "^([*@][%#]|#[@*])", "string operations on $@/$* are"), + (re $ "^[" ++ varChars ++ "*@]+(\\[.*\\])?[,^]", "case modification is"), (re $ "^[" ++ varChars ++ "*@]+(\\[.*\\])?/", "string replacement is") ] bashVars = [