From ac95a9929f07bb3e8530c400373538af4e2b748c Mon Sep 17 00:00:00 2001 From: koalaman Date: Mon, 7 Dec 2015 14:23:00 -0800 Subject: [PATCH] Updated Template (markdown) --- Template.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Template.md b/Template.md index 8491d0b..bcab03d 100644 --- a/Template.md +++ b/Template.md @@ -1,20 +1,32 @@ -## (Message goes here, use `code` and *foo* wisely) +## Add < /dev/null to prevent ssh from swallowing stdin. + +The same error applies to multiple commands, like `ffmpeg` and `mplayer`. ### Problematic code: ```sh -# Simple example of problematic code +while read -r host +do + ssh "$host" "uptime" +done < hosts.txt ``` ### Correct code: ```sh -# Simple example of above code, only fixed +while read -r host +do + ssh "$host" "uptime" < /dev/null +done < hosts.txt ``` ### Rationale: -(An explanation of why the code is problematic and how the correct code is an improvement) +Commands that process stdin will compete with the `read` statement for input. This is especially tricky for commands you wouldn't expect reads from stdin, like `ssh .. uptime`, `ffmpeg` and `mplayer`. + +The most common symptom of this is a `while read` loop only running once, even though the input contains many lines. The is because the rest of the lines are swallowed by the offending command. + +To refuse such commands input, redirect their stdin with `< /dev/null`. ### Exceptions: -(Cases where the user may choose to ignore this warning, if any.) \ No newline at end of file +None. \ No newline at end of file