diff --git a/ShellCheck/Checks/Commands.hs b/ShellCheck/Checks/Commands.hs index f7ce2dd..b7b625c 100644 --- a/ShellCheck/Checks/Commands.hs +++ b/ShellCheck/Checks/Commands.hs @@ -482,13 +482,13 @@ checkInteractiveSu = CommandCheck (Basename "su") f prop_checkSshCmdStr1 = verify checkSshCommandString "ssh host \"echo $PS1\"" prop_checkSshCmdStr2 = verifyNot checkSshCommandString "ssh host \"ls foo\"" prop_checkSshCmdStr3 = verifyNot checkSshCommandString "ssh \"$host\"" +prop_checkSshCmdStr4 = verifyNot checkSshCommandString "ssh -i key \"$host\"" checkSshCommandString = CommandCheck (Basename "ssh") (f . arguments) where - nonOptions = - filter (\x -> not $ "-" `isPrefixOf` concat (oversimplify x)) + isOption x = "-" `isPrefixOf` (concat $ oversimplify x) f args = - case nonOptions args of - (hostport:r@(_:_)) -> checkArg $ last r + case partition isOption args of + ([], hostport:r@(_:_)) -> checkArg $ last r _ -> return () checkArg (T_NormalWord _ [T_DoubleQuoted id parts]) = case filter (not . isConstant) parts of