Difference between revisions of "Shell Scripting - Part 2"
Line 14: | Line 14: | ||
===Bash Shell Scripting Tips=== | ===Bash Shell Scripting Tips=== | ||
− | <ul><li>'''Data Input:'''<br><br>A shell script can obtain data from a number of methods: '''reading input files''', using '''arguments when issuing command''' (positional parameters), or '''prompting for data to store in a variable'''. The later method can be accomplished by using the '''read''' command, for example: '''read -p "Enter your name: " userName'''.<br><br></li><li>'''Mathematical Expressions:'''<br><br>In shell scripting, data is stored in variable as text, not other data types (ints, floats, chars, etc) like in compiled programs like C or Java. In order to have a shell script perform '''mathematical operations''', number or variable need to be surrounded by two sets of parenthesis '''((..))''' in order to convert a number stored as text to a binary number.<br><br><u>'''Examples'''</u><br><br>''var1=5;var2=10''<br>''echo "$var1 + $var2 = $((var1+var2))"''<br><br>'''Note:''' shell does not perform floating point calculations (like '''5/10'''). Instead, other commands like '''awk''' or '''bc''' would be required for floating point calculations (decimals)<br><br></li><li>'''Loops (iteration):'''<br><br>Loops and logic are a very important elements of shell scripting (not to mention programming as well). Determinant loops (such as '''for''' loops) usually repeat for a preset number of times (eg. counts, positional parameters stored). In-determinant loops (such as '''while''' or '''until''' loops) may repeat based on unknown conditions (like waiting for user to enter correct data). Test conditions can be used with in-determinant loops, or even commands! If a command runs successfully (eg ls, cd, grep matching a pattern), zero (true) value is returned, otherwise a non-zero (false) value is returned. Command options or redirection to /'''dev/null''' can be used to just test if command runs, but not display stdout or stderr. Conditional statements "and" (&&) / "or" (||) can also be used when testing multiple conditions.<br><br>'''<u>Examples (try in a shell script)</u>'''<br><br>''set ops235 is fun''<br>''for x''<br>''do''<br> ''echo "argument is $x"''<br>''done''<br><br>''for x in $(ls)''<br>''do''<br> ''echo "Filename: $x"''<br>''done''<br><br>''read -p "enter a whole number: " num''<br>''until echo $num | grep -q "^[0-9][0-9]*$"''<br>''do''<br> ''read -p "Incorrect. Please enter WHOLE NUMBER: " num''<br>''done''<br><br>''read -p "pick a number between 1 and 10: " num''<br>''while [ $num -lt 1 ] || [ $num -gt 10 ]<br>''do''<br> ''read -p "Incorrect. Please pick number between 1 and 10: " num''<br>''done''<br><br></li></ul> | + | <ul><li>'''Data Input:'''<br><br>A shell script can obtain data from a number of methods: '''reading input files''', using '''arguments when issuing command''' (positional parameters), or '''prompting for data to store in a variable'''. The later method can be accomplished by using the '''read''' command, for example: '''read -p "Enter your name: " userName'''.<br><br></li><li>'''Mathematical Expressions:'''<br><br>In shell scripting, data is stored in variable as text, not other data types (ints, floats, chars, etc) like in compiled programs like C or Java. In order to have a shell script perform '''mathematical operations''', number or variable need to be surrounded by two sets of parenthesis '''((..))''' in order to convert a number stored as text to a binary number.<br><br><u>'''Examples'''</u><br><br>''var1=5;var2=10''<br>''echo "$var1 + $var2 = $((var1+var2))"''<br><br>'''Note:''' shell does not perform floating point calculations (like '''5/10'''). Instead, other commands like '''awk''' or '''bc''' would be required for floating point calculations (decimals)<br><br></li><li>'''Loops (iteration):'''<br><br>Loops and logic are a very important elements of shell scripting (not to mention programming as well). Determinant loops (such as '''for''' loops) usually repeat for a preset number of times (eg. counts, positional parameters stored). In-determinant loops (such as '''while''' or '''until''' loops) may repeat based on unknown conditions (like waiting for user to enter correct data). Test conditions can be used with in-determinant loops, or even commands! If a command runs successfully (eg ls, cd, grep matching a pattern), zero (true) value is returned, otherwise a non-zero (false) value is returned. Command options or redirection to /'''dev/null''' can be used to just test if command runs, but not display stdout or stderr. Conditional statements "and" (&&) / "or" (||) can also be used when testing multiple conditions.<br><br>'''<u>Examples (try in a shell script)</u>'''<br><br>''set ops235 is fun''<br>''for x''<br>''do''<br> ''echo "argument is $x"''<br>''done''<br><br>''for x in $(ls)''<br>''do''<br> ''echo "Filename: $x"''<br>''done''<br><br>''read -p "enter a whole number: " num''<br>''until echo $num | grep -q "^[0-9][0-9]*$"''<br>''do''<br> ''read -p "Incorrect. Please enter WHOLE NUMBER: " num''<br>''done''<br><br>''read -p "pick a number between 1 and 10: " num''<br>''while [ $num -lt 1 ] || [ $num -gt 10 ]<br>''do''<br> ''read -p "Incorrect. Please pick number between 1 and 10: " num''<br>''done''<br><br></li></ul> |
[[Category:OPS235]] | [[Category:OPS235]] | ||
[[Category:OPS235 Labs]] | [[Category:OPS235 Labs]] |
Revision as of 10:24, 1 October 2015
Contents
Purpose of Shell Scripting - Part 2
Online Scripting Resources
If you require additional practice in creating shell scripts and using the vi text editor, run the commands in your Matrix account:
Lab 2 Scripting Content
Bash Shell Scripting Tips
- Data Input:
A shell script can obtain data from a number of methods: reading input files, using arguments when issuing command (positional parameters), or prompting for data to store in a variable. The later method can be accomplished by using the read command, for example: read -p "Enter your name: " userName. - Mathematical Expressions:
In shell scripting, data is stored in variable as text, not other data types (ints, floats, chars, etc) like in compiled programs like C or Java. In order to have a shell script perform mathematical operations, number or variable need to be surrounded by two sets of parenthesis ((..)) in order to convert a number stored as text to a binary number.
Examples
var1=5;var2=10
echo "$var1 + $var2 = $((var1+var2))"
Note: shell does not perform floating point calculations (like 5/10). Instead, other commands like awk or bc would be required for floating point calculations (decimals) - Loops (iteration):
Loops and logic are a very important elements of shell scripting (not to mention programming as well). Determinant loops (such as for loops) usually repeat for a preset number of times (eg. counts, positional parameters stored). In-determinant loops (such as while or until loops) may repeat based on unknown conditions (like waiting for user to enter correct data). Test conditions can be used with in-determinant loops, or even commands! If a command runs successfully (eg ls, cd, grep matching a pattern), zero (true) value is returned, otherwise a non-zero (false) value is returned. Command options or redirection to /dev/null can be used to just test if command runs, but not display stdout or stderr. Conditional statements "and" (&&) / "or" (||) can also be used when testing multiple conditions.
Examples (try in a shell script)
set ops235 is fun
for x
do
echo "argument is $x"
done
for x in $(ls)
do
echo "Filename: $x"
done
read -p "enter a whole number: " num
until echo $num | grep -q "^[0-9][0-9]*$"
do
read -p "Incorrect. Please enter WHOLE NUMBER: " num
done
read -p "pick a number between 1 and 10: " num
while [ $num -lt 1 ] || [ $num -gt 10 ]
do
read -p "Incorrect. Please pick number between 1 and 10: " num
done