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
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 .
As in the above example ：
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 .
As in the above example ：
It's much more readable .
Voice over ： Some friends will say , I don't know English .
3、 ... and 、 Use readonly and local Modifying variables
seeing the name of a thing one thinks of its function , read-only .
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 )
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 ：
Use double brackets ：
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
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 ）.
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
It can be used -n Check the syntax of the script .
It can be used -v Tracking the execution of each command in the script .
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 .
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 ？