Shell scripting for fun and profit

Linux - The Productive Programmer's Best Friend Productive shells: Reinvent the way you work
9 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$49.99
List Price:  $69.99
You save:  $20
€46.38
List Price:  €64.94
You save:  €18.55
£39.69
List Price:  £55.57
You save:  £15.88
CA$68.04
List Price:  CA$95.27
You save:  CA$27.22
A$77.05
List Price:  A$107.88
You save:  A$30.82
S$67.53
List Price:  S$94.55
You save:  S$27.01
HK$391.10
List Price:  HK$547.57
You save:  HK$156.47
CHF 45.30
List Price:  CHF 63.42
You save:  CHF 18.12
NOK kr542.56
List Price:  NOK kr759.63
You save:  NOK kr217.06
DKK kr345.97
List Price:  DKK kr484.38
You save:  DKK kr138.41
NZ$83.89
List Price:  NZ$117.46
You save:  NZ$33.56
د.إ183.57
List Price:  د.إ257.02
You save:  د.إ73.44
৳5,487.49
List Price:  ৳7,682.93
You save:  ৳2,195.43
₹4,169.34
List Price:  ₹5,837.41
You save:  ₹1,668.07
RM236.60
List Price:  RM331.26
You save:  RM94.66
₦70,914.31
List Price:  ₦99,285.71
You save:  ₦28,371.40
₨13,903.63
List Price:  ₨19,466.20
You save:  ₨5,562.56
฿1,823.66
List Price:  ฿2,553.28
You save:  ฿729.61
₺1,615.90
List Price:  ₺2,262.39
You save:  ₺646.49
B$249.58
List Price:  B$349.43
You save:  B$99.85
R954.17
List Price:  R1,335.92
You save:  R381.74
Лв90.31
List Price:  Лв126.45
You save:  Лв36.13
₩67,592.09
List Price:  ₩94,634.34
You save:  ₩27,042.24
₪184.30
List Price:  ₪258.03
You save:  ₪73.73
₱2,816.67
List Price:  ₱3,943.57
You save:  ₱1,126.89
¥7,571.47
List Price:  ¥10,600.67
You save:  ¥3,029.19
MX$829.61
List Price:  MX$1,161.53
You save:  MX$331.91
QR182.13
List Price:  QR255
You save:  QR72.86
P685.38
List Price:  P959.59
You save:  P274.21
KSh6,573.68
List Price:  KSh9,203.68
You save:  KSh2,630
E£2,364.52
List Price:  E£3,310.52
You save:  E£946
ብር2,840.03
List Price:  ብር3,976.27
You save:  ብር1,136.24
Kz41,802.18
List Price:  Kz58,526.41
You save:  Kz16,724.22
CLP$48,984.20
List Price:  CLP$68,581.80
You save:  CLP$19,597.60
CN¥361.44
List Price:  CN¥506.04
You save:  CN¥144.60
RD$2,960.45
List Price:  RD$4,144.87
You save:  RD$1,184.41
DA6,744.74
List Price:  DA9,443.17
You save:  DA2,698.43
FJ$113.05
List Price:  FJ$158.28
You save:  FJ$45.23
Q389.89
List Price:  Q545.87
You save:  Q155.98
GY$10,460.71
List Price:  GY$14,645.83
You save:  GY$4,185.12
ISK kr6,972.60
List Price:  ISK kr9,762.20
You save:  ISK kr2,789.60
DH506.54
List Price:  DH709.20
You save:  DH202.66
L881.58
List Price:  L1,234.28
You save:  L352.70
ден2,850.77
List Price:  ден3,991.30
You save:  ден1,140.53
MOP$402.90
List Price:  MOP$564.10
You save:  MOP$161.19
N$946.63
List Price:  N$1,325.35
You save:  N$378.72
C$1,840.39
List Price:  C$2,576.69
You save:  C$736.30
रु6,667.15
List Price:  रु9,334.54
You save:  रु2,667.39
S/185.40
List Price:  S/259.58
You save:  S/74.17
K191.34
List Price:  K267.89
You save:  K76.55
SAR187.48
List Price:  SAR262.49
You save:  SAR75
ZK1,261.25
List Price:  ZK1,765.85
You save:  ZK504.60
L230.69
List Price:  L322.98
You save:  L92.29
Kč1,175.26
List Price:  Kč1,645.46
You save:  Kč470.19
Ft18,362.67
List Price:  Ft25,709.21
You save:  Ft7,346.54
SEK kr535.59
List Price:  SEK kr749.87
You save:  SEK kr214.28
ARS$42,879.12
List Price:  ARS$60,034.20
You save:  ARS$17,155.08
Bs345.48
List Price:  Bs483.70
You save:  Bs138.22
COP$193,772.46
List Price:  COP$271,296.95
You save:  COP$77,524.48
₡25,413.63
List Price:  ₡35,581.11
You save:  ₡10,167.48
L1,234.27
List Price:  L1,728.07
You save:  L493.80
₲368,865.97
List Price:  ₲516,441.87
You save:  ₲147,575.90
$U1,890.76
List Price:  $U2,647.22
You save:  $U756.45
zł200.34
List Price:  zł280.50
You save:  zł80.15
Already have an account? Log In

Transcript

Pipes and sub shells are one way of expanding the capabilities of our shell. The ultimate way is by writing shell scripts. These scenarios must be taken into consideration when dealing with complex tasks that can't be automated with a one line command. The good news is that almost any task can be automated with the use of shell scripts. We won't go over an introduction to shell script and instead, we will be looking at some more advanced use cases for writing them. Enough talking and let's start our journey into shell scripting.

First thing that's open a file called script.sh and split the screen so that you can test while writing. Every shell should start with the shebang command, which is which are these characters and followed by the interpreter. It will our shell script will use we will be using bash is our default interpreter. And it's a good idea to use bash because it's a common interpreter that comes with most Linux distributions, and also our six. So shebang being bash. Let's start with a simple use case, reading the arguments passed into the command line, we will assign the value of the first our command line argument, dollar one to a variable called arc, and then print it back to the screen.

Let's save our script and assign it execution permissions and then run it with one argument. As you can see, the default value test is printed back to the screen. In some cases, we want to assign default values to variables. In order to do this, add this to the variable assignment followed by the default value. Now if we rerun the script, we can see that passing no arguments, we'll call that the value, default value actually. And just like pipes, we can change multiple default value assignments together, we can define another variable, or ox, assign it the value 123.

And use the same syntax to assign its value to the arc variable before using the default value script like so. In this case, arc will always receive 123 as its default value. Now let's look at string selectors. To select the substring use the colon followed by the starting position, followed by another colon followed by how many characters like this. In our case, we will be selecting four characters starting from character five. After running the script, we can see the default value long printed to the screen.

Most shell scripts are designed to be run from the command line and receive a variable number of arguments In order to read command line arguments without knowing the total number of arguments, we use the while statement that checks the first argument to not be now using the minus set conditional expression, which means to not be equal to zero. In the while loop, let's echo the variables value and run shift, which shifts command line arguments one position to the left. If we run our script with the arguments, ABC, we can see that our while loops through the parameters and printed each one on a separate line. Now let's extend our key arguments parser and add the case statement for interpreting the argument. Let's assume that our script will have a help option. parsing standard recommends doing long arguments version with minus minus and short version with only one minus so both H and help will bring The Help message.

Also it is recommended to always have a default case and print the message when the user sent invalid options and then exit with a non zero exit value. If we run our script with the minus h option, we can see the message printed. Same as minus minus help. If we run the script with any other option, the invalid option text is printed and the script exits with the exit code one. To get the exit code of the last command use dollar question mark for your Echo. Now let's look at basic functions in Shell.

The syntax is pretty similar to other programming languages. Let's write the function called print IP that will print the IP of the interface specified as the first argument and we will use a subshell and assign the value to a variable called IP. We already have the full command inside our clipboard It's the same one we saw in the lesson about pipes. Now let's add another case store switch statement for the minus E or minus minus A p option. The option will be followed by the name of the interface, which will then pass to the print IP function. Having two arguments for one option means we need to call the shift command twice.

Let's do an IP config to get the name of our wireless interface. And now let's run the following command. Okay, and we can see the IP address. This is a very basic use case where we can see how command line arguments can be passed. We can add our limited options store case statement, defined functions for handling the arguments and even chain multiple options together to form complex scripts and receive well structured information as command line arguments. being effective means running tasks fast fast.

And when it comes to speed bash is not really the first choice in terms of script interpreters. Luckily, we still have some tricks up our sleeves. So if a shell script needs to run multiple independent tasks, we can use the end simple to send the process in background and move forward to the next command. Let's create two functions long running task one and two and and sleep colony side to simulate a long running task. The first long running task function will be sleeping one second and the next will be sleeping two seconds. Then for testing purposes, let's add another key store switch statement called minus p or minus minus parallel and Run the tool long running tasks.

Now if we run this command, it will Take a total of three seconds for the script to finish, we can measure this with the time utility. If you run both functions in the background, we can reduce the running time to the longest running time of both functions because of the weight. When running long running tasks, we probably want the script to wait for the longest running task to finish. In our case, task two. We can achieve this by grabbing the PID of the second task. Here we use the dollar exclamation mark to grab the PID of the last friend command.

Then we use the wait built in command to wait for the execution to finish. After running the script again with the time utility, we can see it takes us a total of two seconds to complete the task. Who would have thought we can do parallel processing in Shell. In the case that the executions take a longer time we can add up notification when the script finishes, notify sent script.sh execution finished. This way, we can start the script to work on some other tasks and receive a notification when the script finishes, you can let your imagination go wild on the things you can achieve with parallel processing, and notifications. Through this lesson, we have seen some common shell predefined variables.

They were this for first argument. This returns the code of the last command, and this is the fifth of the last command run. Other commonly used shell predefined variables include the number of parameters, the list of parameters, all the parameters, the name of the shell script, or the script and the piece of the current running shell. Bash has a lot of features and we recommend going through its man page too. get more information about them. shell scripts are amazing when used the right way.

They can find you in system commands like we saw in our example when we got only the IP address without the whole IP config output, and much much more. You as a pragmatic terminal user should identify what tasks you most commonly do in the command line and what can be automated using shell script. You should create your own collection of shell scripts and add them to your path so that they are easily accessible from any directory.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.