summaryrefslogtreecommitdiffhomepage
path: root/bash.html.markdown
diff options
context:
space:
mode:
authorAayush Ranaut <aayush.ranaut@gmail.com>2015-12-05 11:10:16 +0530
committerAayush Ranaut <aayush.ranaut@gmail.com>2015-12-05 11:10:16 +0530
commitdc675a47edaeced79e13bf99d120c195a38b9ecf (patch)
treee626142c07fa41695b959b606d4337929c9669ed /bash.html.markdown
parent0049a475edba88f6537b2490ca9506df23b46368 (diff)
parentc8475eacd742a1c8c6340121aa95f32f65421113 (diff)
Merged and removed confusing comments in python
Diffstat (limited to 'bash.html.markdown')
-rw-r--r--bash.html.markdown15
1 files changed, 12 insertions, 3 deletions
diff --git a/bash.html.markdown b/bash.html.markdown
index d4f3d424..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
@@ -252,7 +261,7 @@ grep "^foo.*bar$" file.txt
grep -c "^foo.*bar$" file.txt
# if you literally want to search for the string,
# and not the regex, use fgrep (or grep -F)
-fgrep "^foo.*bar$" file.txt
+fgrep "^foo.*bar$" file.txt
# Read Bash shell builtins documentation with the bash 'help' builtin: