From d985380f4833c0b318dd3dc67ad0bd1bbc2e45f3 Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Sat, 31 Oct 2015 14:48:08 -0700 Subject: [PATCH] Consider "echo $( isAssignment w otherwise -> False +isOnlyRedirection t = + case t of + T_Pipeline _ _ [x] -> isOnlyRedirection x + T_Annotation _ _ w -> isOnlyRedirection w + T_Redirecting _ (_:_) c -> isOnlyRedirection c + T_SimpleCommand _ [] [] -> True + otherwise -> False + isFunction t = case t of T_Function {} -> True; _ -> False -- Get the list of commands from tokens that contain them, such as diff --git a/ShellCheck/Analytics.hs b/ShellCheck/Analytics.hs index 6495974..01f92da 100644 --- a/ShellCheck/Analytics.hs +++ b/ShellCheck/Analytics.hs @@ -602,6 +602,8 @@ prop_checkBashisms36= verifyNot checkBashisms "#!/bin/dash\nread -p foo -r bar" prop_checkBashisms37= verifyNot checkBashisms "HOSTNAME=foo; echo $HOSTNAME" prop_checkBashisms38= verify checkBashisms "RANDOM=9; echo $RANDOM" prop_checkBashisms39= verify checkBashisms "foo-bar() { true; }" +prop_checkBashisms40= verify checkBashisms "echo $( True - T_NormalWord id [T_DoubleQuoted _ [T_DollarExpansion _ _]] -> True - T_NormalWord id [T_Backticked _ _] -> True - T_NormalWord id [T_DoubleQuoted _ [T_Backticked _ _]] -> True + T_NormalWord id [T_DollarExpansion _ cmds] -> check cmds + T_NormalWord id [T_DoubleQuoted _ [T_DollarExpansion _ cmds]] -> check cmds + T_NormalWord id [T_Backticked _ cmds] -> check cmds + T_NormalWord id [T_DoubleQuoted _ [T_Backticked _ cmds]] -> check cmds _ -> False + where + check [x] = not $ isOnlyRedirection x + check _ = False prop_checkUuoeCmd1 = verify checkUuoeCmd "echo $(date)" prop_checkUuoeCmd2 = verify checkUuoeCmd "echo `date`" prop_checkUuoeCmd3 = verify checkUuoeCmd "echo \"$(date)\"" prop_checkUuoeCmd4 = verify checkUuoeCmd "echo \"`date`\"" prop_checkUuoeCmd5 = verifyNot checkUuoeCmd "echo \"The time is $(date)\"" +prop_checkUuoeCmd6 = verifyNot checkUuoeCmd "echo \"$( check id cmd