编程知识 cdmana.com

6 shell tips to make scripts look less amateurish (1 minute Series)

Long article 《memcache Core technology points 》 Reading is low , restart 1 Minute Series , The fast disappearing age , Fragmentary time, maybe you like the essay better , I prefer technical practice articles .
Voice over : Tell the truth , Technical thinking article (WHY, HOW), It's better than technology practice (WHAT) It's harder to write .

How to make your own shell Not so Amateur ? below 6 A little practice will help .
Voice over : This article originates from Google A practice of , Part of it is extracted 1 What you can read in minutes , Added some analysis .

One 、 Start with the following sentence

6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
set -o nounset
By default , Encountered a variable that doesn't exist , Will ignore and continue to execute , And that's often not what you expect , Add this option , It can prevent the consequences from spreading , Terminate execution of script .
Voice over : Some mistakes in variable names , It's going to take a long time to debug , In this way , This kind of hand Miss second detection .


set -o errexit
By default , Encountered execution error , Will skip and continue to execute , And that's often not what you expect , Add this option , It can prevent the consequences from spreading , Terminate execution of script .
Voice over : There are some Linux command , for example rm Of -f Parameters can force errors to be ignored , At this point, the script cannot capture errexit, Such parameters are not recommended in scripts .

These two options , All conform to fail fast Design concept .

Two 、 It is necessary to encapsulate functions

Don't patronize and write down , Encapsulation can improve reuse .
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
As in the above example :
log()
Simple packaging , Can save a lot of
[$(date +%Y/%m/%d\ %H:%M:%S)]
Duplicate code for .
Voice over : This log() I little interesting , Have you learned ?






meanwhile , Encapsulation can also improve the readability of the code .
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
As in the above example :
ExtractBashComments
Than
egrep "^#"
It's much more readable .
Voice over : Some friends will say , I don't know English .






3、 ... and 、 Use readonly and local Modifying variables

6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
readonly
seeing the name of a thing one thinks of its function , read-only .

local
Variables within a function .

Don't try to save time , While improving security , Can avoid a lot of people to collapse of the inexplicable mistakes . Is the script written professionally , It's not a high point , It is absolutely necessary to embody from the basic skills .
Voice over : It is said that , One C++ What level of programmers , from ta In the code const How often do you use it , Can see .

Four 、 Use $() Instead of `( Back single quotes )

6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
Why? ? Look at the example above and you will understand :
(1)$() Can support embedded ;
(2)$() No need to escape ;
(3) Some Fonts ,`( Back single quotes ) and ’( Single quotation marks ) It's like , It's easy to confuse people ;



5、 ... and 、 Use [[]] Instead of []

Use single brackets :
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
Use double brackets :
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )


See the difference ?[[]] More in line with the human code :
(1) Avoid escape problems ;
(2) There are many new features ;

New features include, but are not limited to :
|| : Logic or
&& : Logic and
< : String comparison ( There is no need to escape )
== : wildcard (globbing) String comparison
=~ : Regular expressions (regular expression, RegEx) String comparison
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
It should be noted that , from bash3.2 Start , Neither wildcards nor regular expressions can be enclosed in quotation marks ( therefore , The above example , Quotation marks are literal comparisons ).
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
So if there's a space in the expression , It has to be stored in a variable , Then compare the wildcard with the regular .








6、 ... and 、echo It's not the only way to debug

6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
It can be used -n Check the syntax of the script .
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )

It can be used -v Tracking the execution of each command in the script .
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )

It can be used -x Tracking the execution of each command in the script , And add expanded information .

Of course , It can also be in scripts , add to
set -o verbose
set -o xtrace
To permanently specify the output debug information .
Voice over : Try more on the machine and you'll see .



I hope this 1 Minutes, we have a harvest .
6 strip shell Tips , Make scripts look less amateurish (1 Minute Series )
Architect's way - Share technical ideas
Related to recommend :
《 Write a cache, What technical points should be mastered 》



research , When writing a script :
(1) It's because of a mistake , Have you ever driven yourself crazy ?
(2) It's because of the escape , Have you ever made yourself dizzy ?
(3) Yes, it is echo Debugging ?


版权声明
本文为[open_idh31hqp]所创,转载请带上原文链接,感谢

Scroll to Top