From 089edfc6e2bbd5eebc4d3d440be22fc4f1488c8c Mon Sep 17 00:00:00 2001 From: koalaman Date: Tue, 21 Apr 2015 15:43:57 -0700 Subject: [PATCH] Updated Template (markdown) --- Template.md | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/Template.md b/Template.md index 598ba3d..bbb2764 100644 --- a/Template.md +++ b/Template.md @@ -1,17 +1,43 @@ -## (Message goes here) +## Remove '$' or use '_=$((expr))' to avoid executing output. ### Problematic code: - (Simple example of problematic code) + i=4 + $(( i++ )) ### Correct code: - (Simple example of above code, only fixed) +Bash, Ksh: + + i=4 + (( i++ )) + +POSIX (assuming `++` is supported): + + i=4 + _=$(( i++ )) + +Alternative POSIX version that does not preserve the exit code: + + : $(( i++ )) ### Rationale: -(An explanation of why the code is problematic and how the correct code is an improvement) +`$((..))` expands to a number. If it's the only word on the line, the shell will try to execute this number as a command name: + + $ i=4 + $ $(( i++ )) + 4: command not found + $ echo $i + 5 + +To avoid trying to execute the number as a command name, use one of the methods mentioned: + + $ i=4 + $ _=$(( i++ )) + $ echo $i + 5 ### 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