mirror of
				https://github.com/koalaman/shellcheck.git
				synced 2025-11-04 18:28:23 +08:00 
			
		
		
		
	Merge pull request #1873 from josephcsible/checkwhilereadpitfalls
Simplify checkWhileReadPitfalls
This commit is contained in:
		@@ -2340,18 +2340,18 @@ checkWhileReadPitfalls params (T_WhileExpression id [command] contents)
 | 
				
			|||||||
        let plaintext = oversimplify cmd
 | 
					        let plaintext = oversimplify cmd
 | 
				
			||||||
        in headOrDefault "" plaintext == "read"
 | 
					        in headOrDefault "" plaintext == "read"
 | 
				
			||||||
            && ("-u" `notElem` plaintext)
 | 
					            && ("-u" `notElem` plaintext)
 | 
				
			||||||
            && all (not . stdinRedirect) redirs
 | 
					            && not (any stdinRedirect redirs)
 | 
				
			||||||
    isStdinReadCommand _ = False
 | 
					    isStdinReadCommand _ = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    checkMuncher :: Token -> Writer [TokenComment] ()
 | 
					    checkMuncher :: Token -> Writer [TokenComment] ()
 | 
				
			||||||
    checkMuncher (T_Pipeline _ _ (T_Redirecting _ redirs cmd:_)) = do
 | 
					    checkMuncher (T_Pipeline _ _ (T_Redirecting _ redirs cmd:_)) = do
 | 
				
			||||||
        -- Check command substitutions regardless of the command
 | 
					        -- Check command substitutions regardless of the command
 | 
				
			||||||
        sequence_ $ do
 | 
					        case cmd of
 | 
				
			||||||
            (T_SimpleCommand _ vars args) <- Just cmd
 | 
					            T_SimpleCommand _ vars args ->
 | 
				
			||||||
            let words = concat $ concatMap getCommandSequences $ concatMap getWords $ vars ++ args
 | 
					                mapM_ checkMuncher $ concat $ concatMap getCommandSequences $ concatMap getWords $ vars ++ args
 | 
				
			||||||
            return $ mapM_ checkMuncher words
 | 
					            _ -> return ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when (not $ any stdinRedirect redirs) $ do
 | 
					        unless (any stdinRedirect redirs) $ do
 | 
				
			||||||
            -- Recurse into ifs/loops/groups/etc if this doesn't redirect
 | 
					            -- Recurse into ifs/loops/groups/etc if this doesn't redirect
 | 
				
			||||||
            mapM_ checkMuncher $ concat $ getCommandSequences cmd
 | 
					            mapM_ checkMuncher $ concat $ getCommandSequences cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user