The answer from @kEks above is the solution to your question.
However, I'd further suggest that you are missing the point of Snakemake rules having those four rules that all contain shell loops. Is there any reason why you are making a rule that triggers once and runs every command in a loop, rather than having a rule that applies to any individual output file and letting Snakemake do the work? Your code would be considerably simpler if you wrote it this way. You could also then use the touch() output type of Snakemake to save you explicitly running the touch ... command in the shell part.