[24395] 2015-10-18_编写更好Bash脚本的8个建议

文档创建者:s7ckTeam
浏览次数:8
最后更新:2025-01-18
2015-10-18_编写更好Bash脚本的8个建议   B a s h     8   L i n u x   2 0 1 5 - 1 0 - 1 8 L i n u x U n i x 使 使 便 便 s h e b a n g S h e l l s h e b a n g s h e b a n g 使 s h e b a n g 使 b a s h   s h e b a n g s h e l l 使 / b i n / s h b o u r n e   s h e l l / b i n / s h K S H 使 b a s h b o u r n e 1 .   # ! / b i n / b a s h 1 .   # ! / b i n / b a s h 2 .   # # #   D e s c r i p t i o n :   A d d s   u s e r s   b a s e d   o n   p r o v i d e d   C S V   f i l e  
怀 5 0 0 b a s h 使 3 .   # # #   C S V   f i l e   m u s t   u s e   :   a s   s e p a r a t o r 4 .   # # #   u i d : u s e r n a m e : c o m m e n t : g r o u p : a d d g r o u p s : / h o m e / d i r : / u s r / s h e l l : p a s s w d a g e : p a s s w o r d 5 .   # # #   W r i t t e n   b y :   B e n j a m i n   C a n e   -   b e n @ e x a m p l e . c o m   o n   0 3 - 2 0 1 2 1 .   N E W _ U I D = $ ( e c h o   $ x   |   c u t   - d :   - f 1 ) 2 .   N E W _ U S E R = $ ( e c h o   $ x   |   c u t   - d :   - f 2 ) 3 .   N E W _ C O M M E N T = $ ( e c h o   $ x   |   c u t   - d :   - f 3 ) 4 .   N E W _ G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 4 ) 5 .   N E W _ A D D G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 5 ) 6 .   N E W _ H O M E D I R = $ ( e c h o   $ x   |   c u t   - d :   - f 6 ) 7 .   N E W _ S H E L L = $ ( e c h o   $ x   |   c u t   - d :   - f 7 ) 8 .   N E W _ C H A G E = $ ( e c h o   $ x   |   c u t   - d :   - f 8 ) 9 .   N E W _ P A S S = $ ( e c h o   $ x   |   c u t   - d :   - f 9 )         1 0 .   P A S S C H K = $ ( g r e p   - c   " : $ N E W _ U I D : "   / e t c / p a s s w d ) 1 1 .   i f   [   $ P A S S C H K   - g e   1   ] 1 2 .   t h e n 1 3 .   e c h o   " U I D :   $ N E W _ U I D   s e e m s   t o   e x i s t   c h e c k   / e t c / p a s s w d " 1 4 .   e l s e 1 5 .   u s e r a d d   - u   $ N E W _ U I D   - c   " $ N E W _ C O M M E N T "   - m d   $ N E W _ H O M E D I R   - s   $ N E W _ S H E L L   - g   $ N E W _ G R O U P   - G   $ N E W _ A D D G R O U P   $ N E W _ U S E R 1 6 .   i f   [   !   - z   $ N E W _ P A S S   ] 1 7 .   t h e n 1 8 .   e c h o   $ N E W _ P A S S   |   p a s s w d   - - s t d i n   $ N E W _ U S E R 1 9 .   c h a g e   - M   $ N E W _ C H A G E   $ N E W _ U S E R 2 0 .   c h a g e   - d   0   $ N E W _ U S E R   2 1 .   f i 2 2 .   f i
i f i f 使 使 使 1 .   N E W _ U I D = $ ( e c h o   $ x   |   c u t   - d :   - f 1 ) 2 .   N E W _ U S E R = $ ( e c h o   $ x   |   c u t   - d :   - f 2 ) 3 .   N E W _ C O M M E N T = $ ( e c h o   $ x   |   c u t   - d :   - f 3 ) 4 .   N E W _ G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 4 ) 5 .   N E W _ A D D G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 5 ) 6 .   N E W _ H O M E D I R = $ ( e c h o   $ x   |   c u t   - d :   - f 6 ) 7 .   N E W _ S H E L L = $ ( e c h o   $ x   |   c u t   - d :   - f 7 ) 8 .   N E W _ C H A G E = $ ( e c h o   $ x   |   c u t   - d :   - f 8 ) 9 .   N E W _ P A S S = $ ( e c h o   $ x   |   c u t   - d :   - f 9 )         1 0 .   P A S S C H K = $ ( g r e p   - c   " : $ N E W _ U I D : "   / e t c / p a s s w d ) 1 1 .   i f   [   $ P A S S C H K   - g e   1   ] 1 2 .   t h e n 1 3 .       e c h o   " U I D :   $ N E W _ U I D   s e e m s   t o   e x i s t   c h e c k   / e t c / p a s s w d " 1 4 .   e l s e 1 5 .       u s e r a d d   - u   $ N E W _ U I D   - c   " $ N E W _ C O M M E N T "   - m d   $ N E W _ H O M E D I R   - s   $ N E W _ S H E L L   - g   $ N E W _ G R O U P   - G   $ N E W _ A D D G R O U P   $ N E W _ U S E R 1 6 .       i f   [   !   - z   $ N E W _ P A S S   ] 1 7 .       t h e n 1 8 .               e c h o   $ N E W _ P A S S   |   p a s s w d   - - s t d i n   $ N E W _ U S E R 1 9 .               c h a g e   - M   $ N E W _ C H A G E   $ N E W _ U S E R 2 0 .               c h a g e   - d   0   $ N E W _ U S E R   2 1 .       f i 2 2 .   f i 1 .   N E W _ U I D = $ ( e c h o   $ x   |   c u t   - d :   - f 1 ) 2 .   N E W _ U S E R = $ ( e c h o   $ x   |   c u t   - d :   - f 2 ) 3 .   N E W _ C O M M E N T = $ ( e c h o   $ x   |   c u t   - d :   - f 3 ) 4 .   N E W _ G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 4 ) 5 .   N E W _ A D D G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 5 ) 6 .   N E W _ H O M E D I R = $ ( e c h o   $ x   |   c u t   - d :   - f 6 )
7 .   N E W _ S H E L L = $ ( e c h o   $ x   |   c u t   - d :   - f 7 ) 8 .   N E W _ C H A G E = $ ( e c h o   $ x   |   c u t   - d :   - f 8 ) 9 .   N E W _ P A S S = $ ( e c h o   $ x   |   c u t   - d :   - f 9 ) 1 0 .     1 1 .   P A S S C H K = $ ( g r e p   - c   " : $ N E W _ U I D : "   / e t c / p a s s w d ) 1 2 .   i f   [   $ P A S S C H K   - g e   1   ] 1 3 .   t h e n 1 4 .       e c h o   " U I D :   $ N E W _ U I D   s e e m s   t o   e x i s t   c h e c k   / e t c / p a s s w d " 1 5 .   e l s e 1 6 .       u s e r a d d   - u   $ N E W _ U I D   - c   " $ N E W _ C O M M E N T "   - m d   $ N E W _ H O M E D I R   - s   $ N E W _ S H E L L   - g   $ N E W _ G R O U P   - G   $ N E W _ A D D G R O U P   $ N E W _ U S E R 1 7 .     1 8 .       i f   [   !   - z   $ N E W _ P A S S   ] 1 9 .       t h e n 2 0 .               e c h o   $ N E W _ P A S S   |   p a s s w d   - - s t d i n   $ N E W _ U S E R 2 1 .               c h a g e   - M   $ N E W _ C H A G E   $ N E W _ U S E R 2 2 .               c h a g e   - d   0   $ N E W _ U S E R   2 3 .       f i 2 4 .   f i 1 .   # # #   P a r s e   $ x   ( t h e   c s v   d a t a )   a n d   p u t   t h e   i n d i v i d u a l   f i e l d s   i n t o   v a r i a b l e s 2 .   N E W _ U I D = $ ( e c h o   $ x   |   c u t   - d :   - f 1 ) 3 .   N E W _ U S E R = $ ( e c h o   $ x   |   c u t   - d :   - f 2 ) 4 .   N E W _ C O M M E N T = $ ( e c h o   $ x   |   c u t   - d :   - f 3 ) 5 .   N E W _ G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 4 ) 6 .   N E W _ A D D G R O U P = $ ( e c h o   $ x   |   c u t   - d :   - f 5 ) 7 .   N E W _ H O M E D I R = $ ( e c h o   $ x   |   c u t   - d :   - f 6 ) 8 .   N E W _ S H E L L = $ ( e c h o   $ x   |   c u t   - d :   - f 7 ) 9 .   N E W _ C H A G E = $ ( e c h o   $ x   |   c u t   - d :   - f 8 ) 1 0 .   N E W _ P A S S = $ ( e c h o   $ x   |   c u t   - d :   - f 9 ) 1 1 .     1 2 .   # # #   C h e c k   i f   t h e   n e w   u s e r i d   a l r e a d y   e x i s t s   i n   / e t c / p a s s w d 1 3 .   P A S S C H K = $ ( g r e p   - c   " : $ N E W _ U I D : "   / e t c / p a s s w d ) 1 4 .   i f   [   $ P A S S C H K   - g e   1   ]
b a s h 使 使 使 $ N E W _ U I D $ N E W _ U S E R $ 1 $ x 1 4 .   i f   [   $ P A S S C H K   - g e   1   ] 1 5 .   t h e n 1 6 .       1 7 .   # # #   I f   i t   d o e s ,   s k i p 1 8 .       e c h o   " U I D :   $ N E W _ U I D   s e e m s   t o   e x i s t   c h e c k   / e t c / p a s s w d " 1 9 .   e l s e 2 0 .       2 1 .   # # #   I f   n o t   a d d   t h e   u s e r 2 2 .       u s e r a d d   - u   $ N E W _ U I D   - c   " $ N E W _ C O M M E N T "   - m d   $ N E W _ H O M E D I R   - s   $ N E W _ S H E L L   - g   $ N E W _ G R O U P   - G   $ N E W _ A D D G R O U P   $ N E W _ U S E R 2 3 .     2 4 .       2 5 .   # # #   C h e c k   i f   n e w _ p a s s   i s   e m p t y   o r   n o t 2 6 .       i f   [   !   - z   $ N E W _ P A S S   ] 2 7 .       t h e n 2 8 .               2 9 .   # # #   I f   n o t   e m p t y   s e t   t h e   p a s s w o r d   a n d   p a s s   e x p i r y 3 0 .               e c h o   $ N E W _ P A S S   |   p a s s w d   - - s t d i n   $ N E W _ U S E R 3 1 .               c h a g e   - M   $ N E W _ C H A G E   $ N E W _ U S E R 3 2 .               c h a g e   - d   0   $ N E W _ U S E R   3 3 .       f i 3 4 .   f i 1 .   f o r   x   i n   ` c a t   $ 1 ` 2 .   d o 3 .           N E W _ U I D = $ ( e c h o   $ x   |   c u t   - d :   - f 1 ) 4 .           N E W _ U S E R = $ ( e c h o   $ x   |   c u t   - d :   - f 2 ) 1 .   I N P U T _ F I L E = $ 1
C S V U I D U S E R $ N E W _ U I D $ N E W _ U S E R 使   $ ( c o m m a n d )   b a s h 使 $ ( c o m m a n d ) 使 b a s h 使 使 退 使 $ F I L E _ P A T H 退 1 使 退 I N P U T _ F I L E = $ 1 2 .   f o r   C S V _ L I N E   i n   ` c a t   $ I N P U T _ F I L E ` 3 .   d o 4 .       N E W _ U I D = $ ( e c h o   $ C S V _ L I N E   |   c u t   - d :   - f 1 ) 5 .       N E W _ U S E R = $ ( e c h o   $ C S V _ L I N E   |   c u t   - d :   - f 2 ) 1 .   D A T E = ` d a t e   + % F ` 1 .   D A T E = $ ( d a t e   + % F ) 1 .   i f   [   - d   $ F I L E _ P A T H   ] 2 .   t h e n 3 .       f o r   F I L E   i n   $ ( l s   $ F I L E _ P A T H / * ) 4 .       d o 5 .           e c h o   " T h i s   i s   a   f i l e :   $ F I L E " 6 .       d o n e 7 .   e l s e 8 .       e x i t   1 9 .   f i
线 h t t p : / / b e n c a n e . c o m / 2 0 1 4 / 0 6 / 0 6 / 8 - t i p s - f o r - c r e a t i n g - b e t t e r - b a s h - s c r i p t s /   B e n j a m i n   C a n e h t t p : / / b l o g . j o b b o l e . c o m / 9 2 8 1 0 /   a s h i o n t a n g 使 b a s h 1 .   i f   [   - d   $ F I L E _ P A T H   ] 2 .   t h e n 3 .       f o r   F I L E   i n   $ ( l s   $ F I L E _ P A T H / * ) 4 .       d o 5 .           e c h o   " T h i s   i s   a   f i l e :   $ F I L E " 6 .       d o n e 7 .   e l s e 8 .       e c h o   " e x i t i n g . . .   p r o v i d e d   f i l e   p a t h   d o e s   n o t   e x i s t   o r   i s   n o t   a   d i r e c t o r y " 9 .       e x i t   1 1 0 .   f i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则