zoukankan      html  css  js  c++  java
  • bash实例

    1写一个脚本,完成如下功能(使用函数):
    1、脚本使用格式:
    mkscript.sh [-D|--description "script description"] [-A|--author "script author"]   文件名
    2、如果文件事先不存在,则创建;且前几行内容如下所示:
    #!/bin/bash
    # Description: script description
    # Author: script author
    #
    3、如果文件事先存在,但不空,且第一行不是“#!/bin/bash”,则提示语法错误并退出;如果第一行是“#!/bin/bash”,则使用vim打开脚本;把光标直接定位至最后一行
    4、打开脚本后关闭时判断脚本是否有语法错误
    如果有,提示输入y继续编辑,输入n放弃并退出;
    如果没有,则给此文件以执行权限;

    mkscript.sh文件代码如下:

     1 #!/bin/bash
     2 #
     3 echo $1 > a
     4 #echo "1: $1"
     5 #echo "2: $2"
     6 #echo "Count for args is: $#"
     7 
     8 #文件不存在
     9 if [ ! -f "$2" ]; then
    10     touch "$2"
    11     echo "#!/bin/bash" >> $2
    12     description=`sed 's/[|]|"//g' aa |awk '{print $1}' | awk -F-- '{print $2}'`
    13     #echo $description  
    14     #description
    15     #echo ${#description}
    16     #把description中的首字母大写
    17     #echo ${description:0:1}
    18     first_up_1=`echo ${description:0:1} | tr '[a-z]' '[A-Z]'`
    19     echo "#$first_up_1${description:1:${#description}}:":`sed 's/[|]|"//g' aa |awk '{print $2,$3}'` >> $2
    20     
    21     author=`sed 's/[|]|"//g' aa |awk '{print $4}' | awk -F-- '{print $2}'`
    22     #echo $author 
    23     #计算author的长度
    24     #echo ${#author}
    25     #把author中的首字母大写
    26     #echo ${author:0:1}
    27     first_up_2=`echo ${author:0:1} | tr '[a-z]' '[A-Z]'`  
    28     echo "#$first_up_2${author:1:${#author}}:"`sed 's/[|]|"//g' aa |awk '{print $5,$6}'` >> $2
    29     echo "#" >> $2
    30 #文件存在
    31 else    
    32     #文件为空
    33     if [ ! -s $2 ]; then
    34         echo "file is empty"
    35     #文件不空
    36     else
    37         #第一行不是“#!/bin/bash”
    38         firstLine=`sed -n '1p' $2`
    39         #字符串比较符两边一定要有空格
    40         if [ "$firstLine" != "#!/bin/bash" ]; then
    41             echo "Error command" && exit
    42         #第一行是“#!/bin/bash”
    43         else
    44             #使用vim打开脚本;把光标直接定位至最后一行
    45             vim + $2
    46             #关闭文件
    47             
    48             #判断脚本有无语法错误
    49             bash -n $2
    50             #有语法错误
    51             if [ $? -ne 0 ]; then
    52                 echo "$2 has grammar mistakes"
    53                 read -p "Pls input y(continue this edit)/n(quit without saved): " choice
    54                 while true;do
    55                     if [[ $choice == y ]] ;then
    56                         #继续编辑
    57                         vim + $2
    58                     elif [[ $choice == n ]] ;then
    59                         exit 1
    60                     else
    61                         echo -n "Error,"
    62                     fi
    63                     read -p "Input again y(continue this edit)/n(quit without saved): " choice
    64                 done
    65             else
    66                 #赋予文件执行权限
    67                 chmod +x $2
    68             fi
    69         fi        
    70     fi
    71 fi

    运行命令是: 

    mkscript.sh '[-D|--description "script description"] [-A|--author "script author"]'  test

  • 相关阅读:
    Springboot开发微信公众号(四)
    Springboot开发微信公众号(三)
    springboot中Scheduled不执行的原因
    static方法里用@Autowire或者@Resource注入的属性
    Spring boot 读取配置文件application.yml (自定义属性值)
    Apache-Flink深度解析-SQL概览
    Apache-Flink深度解析-DataStream-Connectors之Kafka
    Apache-Flink深度解析-JOIN 算子
    Apache-Flink深度解析-TableAPI
    Spark streaming消费Kafka的正确姿势
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/4925780.html
Copyright © 2011-2022 走看看