Difference between revisions of "Introduction to Linux in HPC/Shell scripting"
Introduction to Linux in HPC/Shell scripting
Jump to navigation
Jump to search
(Add question about CL args) |
m (Tweak page sorting) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:Tutorials]]<nowiki /> | + | [[Category:Tutorials|Shell Scripting]]<nowiki /> |
− | {{DISPLAYTITLE: | + | {{DISPLAYTITLE:Shell Scripting}}<nowiki /> |
{{Syllabus Introduction to Linux}}<nowiki /> | {{Syllabus Introduction to Linux}}<nowiki /> | ||
__TOC__ | __TOC__ | ||
Line 15: | Line 15: | ||
{{hidden begin | {{hidden begin | ||
− | |title = | + | |title = Which command rund the executable script "test.sh" located in your home folder? |
}} | }} | ||
− | |||
<quiz display=simple> | <quiz display=simple> | ||
− | { | + | { |
|type="[]"} | |type="[]"} | ||
- <code>~$ test.sh</code> | - <code>~$ test.sh</code> | ||
Line 27: | Line 26: | ||
+ <code>~$ ~/test.sh</code> | + <code>~$ ~/test.sh</code> | ||
|| Explanation: The <code>~/</code> refers to the path of your home directory. This is equivalent to the full path of <code>/home/<USERNAME>/</code>. | || Explanation: The <code>~/</code> refers to the path of your home directory. This is equivalent to the full path of <code>/home/<USERNAME>/</code>. | ||
+ | </quiz> | ||
+ | {{hidden end}} | ||
− | {Which bash command below assigns "value" to variable var? | + | {{hidden begin |
+ | |title = Which bash command below assigns "value" to variable var? | ||
+ | }} | ||
+ | <quiz display=simple> | ||
+ | { | ||
|type="()"} | |type="()"} | ||
+ <code>var="value"</code> | + <code>var="value"</code> | ||
Line 35: | Line 40: | ||
|| | || | ||
- <code>var=="value"</code> | - <code>var=="value"</code> | ||
− | || | + | || |
+ | </quiz> | ||
+ | {{hidden end}} | ||
− | {What do you have to add to the header of a script to make it an '''executable''' bash script? | + | {{hidden begin |
+ | |title = What do you have to add to the header of a script to make it an '''executable''' bash script? | ||
+ | }} | ||
+ | <quiz display=simple> | ||
+ | { | ||
|type="()"} | |type="()"} | ||
- <code>#BASH</code> | - <code>#BASH</code> | ||
Line 45: | Line 56: | ||
+ <code>#!/bin/bash</code> | + <code>#!/bin/bash</code> | ||
|| Explanation: This is referred to as the ''shebang''. | || Explanation: This is referred to as the ''shebang''. | ||
+ | </quiz> | ||
+ | {{hidden end}} | ||
− | {How can you de-reference the second command-line argument in a script when calling <code>~$ ./test.sh arg1 arg2 arg3</code>? | + | {{hidden begin |
+ | |title = How can you de-reference the second command-line argument in a script when calling <code>~$ ./test.sh arg1 arg2 arg3</code>? | ||
+ | }} | ||
+ | <quiz display=simple> | ||
+ | { | ||
|type="()"} | |type="()"} | ||
- <code>$arg2</code> | - <code>$arg2</code> | ||
Line 55: | Line 72: | ||
|| | || | ||
+ <code>$2</code> | + <code>$2</code> | ||
− | || Explanation: Command-line arguments start to count at 0, however the 0th element is the script-name itself | + | || Explanation: Command-line arguments start to count at 0, however the 0th element is the script-name itself therefore the second argument is arg2 in this case which can be accessed/de-referenced in the script with <code>$2</code> |
- <code>$0</code> | - <code>$0</code> | ||
|| | || |
Latest revision as of 16:24, 4 December 2020
Tutorial | |
---|---|
Title: | Introduction to Linux in HPC |
Provider: | HPC.NRW
|
Contact: | tutorials@hpc.nrw |
Type: | Multi-part video |
Topic Area: | HPC Platforms |
License: | CC-BY-SA |
Syllabus
| |
1. Background and History | |
2. The Command Line | |
3. Linux Directory Structure | |
4. Files | |
5. Text display and search | |
6. Users and permissions | |
7. Processes | |
8. The vim text editor | |
9. Shell scripting | |
10. Environment variables | |
11. System configuration | |
12. SSH Connections | |
13. SSH: Graphics and File Transfer | |
14. Various tips |
In this video the concept of shell scripting is introduced. Commands entered into the console can also be written into a text file to create an executable script. The tutorial will describe how to create such a script, explain its basic structure and how to execute it in the console.
Video
Quiz
Which command rund the executable script "test.sh" located in your home folder?
Which bash command below assigns "value" to variable var?
What do you have to add to the header of a script to make it an executable bash script?
How can you de-reference the second command-line argument in a script when calling
~$ ./test.sh arg1 arg2 arg3
?
Exercises in Terminal
1. Write a script that: a. Prints an environment variable b. Saves the output of the date command to a variable c. Sleeps for 2 seconds d. Prints the new and old date and time
Answer: |
One possible way to write the script is #!/bin/bash
echo "I am $USER, my home directory is $HOME"
olddate=$(date)
sleep 10s
echo "old date: ${olddate}"
echo "new date: $(date)"
Explanation: |
2. Find a way to execute a script without setting execute permissions.
Answer: | |
bash script.sh
|
Explanation: bash will be used as an interpreter to execute script.sh and the commands contained in script.sh will be executed sequentially.
|
3. Find out how to do other programming things in bash
(e.g. functions, classes). How convenient do they look?
Answer: |
To define a function function hello {
echo "hello, world"
}
To use this function in
hello
|
4. Look at different ways you can define if
conditions.
Answer: |
Both single square brackets str="a b"
The
if [[ $str = "a b" ]]; then
echo "it works"
fi
However, the
if [ $str = "a b" ]; then
echo "it works"
fi
To have the correct syntax for if [ "$str" = "a b" ]; then
echo "it works"
fi
|
5. Find out what different types of quotes (single'
vs. double"
) do?
Answer: |
single quote
var=abc
echo '$var'
This script prints the literal string var=abc
echo "$var"
This script prints the value of |
6. Create an shell variable MYIDENTITY and export it as below:
$ export MYIDENTITY=whoami
How will you list the shell variable MYIDENTITY?
Execute the shell variable MYIDENTITY, what is the output?
Answer: |
you can list the variable by using the echo command as follows $ echo $MYIDENTITY
whoami
The arguments passed to echo are printed to the standard output. $ $MYIDENTITY
username
The shell variable upon execution runs the command |