diff options
| author | Awal Garg <awalGarg@users.noreply.github.com> | 2015-10-14 21:10:28 +0530 | 
|---|---|---|
| committer | Awal Garg <awalGarg@users.noreply.github.com> | 2015-10-14 21:10:28 +0530 | 
| commit | f4022052471d6dc0a9c2fb8794e1352253b4c5ad (patch) | |
| tree | 8d117d04c8ee2e61bfe27a9a720f9f424365ee02 /bash.html.markdown | |
| parent | 8ec133b29595b8dac963eafa63ab0c479e37a3c1 (diff) | |
[bash/en] use $var with quotes in conditions
Diffstat (limited to 'bash.html.markdown')
| -rw-r--r-- | bash.html.markdown | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/bash.html.markdown b/bash.html.markdown index 191f916a..211d2944 100644 --- a/bash.html.markdown +++ b/bash.html.markdown @@ -90,17 +90,26 @@ else      echo "Your name is your username"  fi +# NOTE: if $Name is empty, bash sees the above condition as: +if [ -ne $USER ] +# which is invalid syntax +# so the "safe" way to use potentially empty variables in bash is: +if [ "$Name" -ne $USER ] ... +# which, when $Name is empty, is seen by bash as: +if [ "" -ne $USER ] ... +# which works as expected +  # There is also conditional execution  echo "Always executed" || echo "Only executed if first command fails"  echo "Always executed" && echo "Only executed if first command does NOT fail"  # To use && and || with if statements, you need multiple pairs of square brackets: -if [ $Name == "Steve" ] && [ $Age -eq 15 ] +if [ "$Name" == "Steve" ] && [ "$Age" -eq 15 ]  then      echo "This will run if $Name is Steve AND $Age is 15."  fi -if [ $Name == "Daniya" ] || [ $Name == "Zach" ] +if [ "$Name" == "Daniya" ] || [ "$Name" == "Zach" ]  then      echo "This will run if $Name is Daniya OR Zach."  fi | 
