Linux bash integrated instance bash Script Editor, linuxbash

Source: Internet
Author: User

Linux bash integrated instance bash Script Editor, linuxbash

Note: This is a simple bash Script Editor, but it has been tested. The reason for writing this blog is to exercise loop control language, functions, location parameters, local variables, function parameter calls, and inter-function calls, there is also the parameters for Obtaining user options and options.

Note: Use getopt to obtain the script options and script option parameters for further judgment. Please refer to the main () function.

#! /Bin/bash # Author: Li anjie # Time: 2014-12-05show_usage () {echo 'usage mkscript. sh [-D | -- description "script description"] [-A | -- author "script author"]/path/to/somefile '} write_file_header () {# Write File Header Information local file_path = "$1" local desc = $2 local auth = $ 3cat >>$ file_path <EOD #! /Bin/bash # Description: $ desc # Author: $ auth # EOD} create_file () {# create a new file local file_path = "$1" judge_dir $ file_path [$? -Eq 0] & write_file_header "$ file_path" "$ desc" "$ auth" vim + $ file_pathchk_syntax "$ file_path"} judge_dir () {# Check whether the directory has the write permission: local file_path = "$1" local dirname =$ (dirname $ file_path) if [-d "$ dirname"]; then [-w "$ dirname"] & return 0 else # echo "No such Directory or $ dirname permission denied. "exit 1 fi} chk_syntax () {# identify whether the file has a script syntax error. local file_path =" $1 "clearif/bin/bash-n" $ file_path "; then chm Od + x "$ file_path" exit 0 else while true; do read-p "File has a syntax error, whether to continue editing. (y/n): "opts case $ opts in y | Y) vim +" $ file_path "chk_syntax" $ file_path "; n | N) exit 0 ;; esac done fi} modify_file () {# File Modification related operation local file_path = "$1" local desc = $2 local auth = $ 3judge_dir "$ file_path" if [$? -Eq 0]; then header = $(head-1 "$ file_path") if ["$ header "! = "#! /Bin/bash "]; then echo" This is not a script file, grogram will be exit. "& exit 1 elif [" $ header "= '#! /Bin/bash ']; then if [! -Z "auth"] & [! -Z "$ desc"]; then if grep "# Author:" "$ file_path" & grep "# Description:" "$ file_path "; then sed-I "1, 5 s/\ (# Author :\). */\ 1 $ auth/"" $ file_path "sed-I" s/\ (# Description :\). */\ 1 $ desc/"" $ file_path "else sed-I" 1a \ # Author: $ auth "" $ file_path "sed-I" 2a \ # Description: $ desc "" $ file_path "fi vim +" $ file_path "chk_syntax" $ file_path "elif [! -Z "$ auth"]; then if grep '# Author:' "$ file_path"; then sed-I "1, 5 s/\ (# Author :\). */\ 1 $ auth/"" $ file_path "else sed-I" 1a \ # Author: $ auth "" $ file_path "fi vim +" $ file_path "chk_syntax" $ file_path "elif [! -Z "$ desc"]; then if grep '# Description:' "$ file_path"; then sed-I "1, 5 s/\ (# Description :\). */\ 1 $ desc/"" $ file_path "else sed-I" 2a \ # Description: $ desc/"" $ file_path "fi vim +" $ file_path "chk_syntax" $ file_path "else vim +" $ file_path "chk_syntax" $ file_path "fi fifi} main () {TEMP = 'getopt-o A: D: -- long author:, description: -- "$ @" '[$? -Ne 0] & echo-e "\ 033 [31 mERROR: unknown argument! \ 033 [0m \ n "& show_usage & exit 1 eval set --" $ TEMP "# echo" $ TEMP "while true; do [-z "$1"] & show_usage & exit 1 case "$1" in-D | -- description) # The parameter of this option is $2 desc = $2 [$ {desc: 0: 1 }== "-"] & [-z $ {desc: 2: 1}] & show_usage & exit 1 shift 2;-A | -- author) # The parameter of this option is $2 auth = $2 [$ {auth: 0: 1 }== "-"] & [-z $ {auth: 2: 1}] & show_usage & exit 1 shift 2 ;;--) shift [$ #-ne 1] & show_usage & e Xit 1 file_path = "$1" break; *) # use other parameters to indicate an error and exit. show_usage & exit 1 esacdone # echo "desc: $ desc" # echo "auth: $ auth" # echo "file_path: $ file_path" if [! -F "$ file_path"]; then create_file "$ file_path" & chk_syntax "$ file_path" elif [-f "$ file_path"]; then modify_file "$ file_path" "$ desc" "$ auth" fi} main "$ @"


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.