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文件代码如下:

 #!/bin/bash
#
echo $ > a
#echo "1: $1"
#echo "2: $2"
#echo "Count for args is: $#" #文件不存在
if [ ! -f "$2" ]; then
touch "$2"
echo "#!/bin/bash" >> $
description=`sed 's/\[\|\]\|"//g' aa |awk '{print $1}' | awk -F-- '{print $2}'`
#echo $description
#description
#echo ${#description}
#把description中的首字母大写
#echo ${description::}
first_up_1=`echo ${description::} | tr '[a-z]' '[A-Z]'`
echo "#$first_up_1${description:1:${#description}}:":`sed 's/\[\|\]\|"//g' aa |awk '{print $2,$3}'` >> $ author=`sed 's/\[\|\]\|"//g' aa |awk '{print $4}' | awk -F-- '{print $2}'`
#echo $author
#计算author的长度
#echo ${#author}
#把author中的首字母大写
#echo ${author::}
first_up_2=`echo ${author::} | tr '[a-z]' '[A-Z]'`
echo "#$first_up_2${author:1:${#author}}:"`sed 's/\[\|\]\|"//g' aa |awk '{print $5,$6}'` >> $
echo "#" >> $
#文件存在
else
#文件为空
if [ ! -s $ ]; then
echo "file is empty"
#文件不空
else
#第一行不是“#!/bin/bash”
firstLine=`sed -n '1p' $`
#字符串比较符两边一定要有空格
if [ "$firstLine" != "#!/bin/bash" ]; then
echo "Error command" && exit
#第一行是“#!/bin/bash”
else
#使用vim打开脚本;把光标直接定位至最后一行
vim + $
#关闭文件 #判断脚本有无语法错误
bash -n $
#有语法错误
if [ $? -ne ]; then
echo "$2 has grammar mistakes"
read -p "Pls input y(continue this edit)/n(quit without saved): " choice
while true;do
if [[ $choice == y ]] ;then
#继续编辑
vim + $
elif [[ $choice == n ]] ;then
exit
else
echo -n "Error,"
fi
read -p "Input again y(continue this edit)/n(quit without saved): " choice
done
else
#赋予文件执行权限
chmod +x $
fi
fi
fi
fi

运行命令是:

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

bash实例的更多相关文章

  1. Bash 实例,第二部分

    我们先看一下处理命令行自变量的简单技巧,然后再看看 bash 基本编程结构. 接收自变量 在 介绍性文章 中的样本程序中,我们使用环境变量 "$1" 来引用第一个命令行自变量.类似 ...

  2. Bash 实例,第一部分

    您可能要问:为什么要学习 Bash 编程?好,以下是几条令人信服的理由: 已经在运行它 如果查看一下,可能会发现:您现在正在运行 bash.因为 bash 是标准 Linux shell,并用于各种目 ...

  3. bash实例-参数/函数/统计IP

    1.写一个脚本getinterface.sh,脚本可以接受参数(i,I,a),完成以下任务:   (1)使用以下形式:getinterface.sh [-i interface|-I IP|-a]  ...

  4. Linux下Bash入门学习笔记

    学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...

  5. bash參考手冊之五(shell变量)续三

    LINENO 当前在运行的脚本或者shell函数的行号. LINES 命令select用来确定打印选择列表的列宽.收到SIGWINCH后,自己主动设置. MACHTYPE 是一个字符串,描写叙述了正在 ...

  6. Bash 翻译

    Bash参考手册 目录 1简介 1.1什么是Bash? 1.2什么是shell? 2定义 3基本外壳功能 3.1 Shell语法 3.1.1外壳操作 3.1.2报价 3.1.2.1逃逸角色 3.1.2 ...

  7. bash基础之三配置文件

    一.shell的两种登录方式: 1.交互式登录:(1)直接通过终端输入账号密码登录(2)使用“su - UserName” 或“su -l Username”切换的用户执行顺序:/etc/profil ...

  8. linux命令帮助 man bash

    BASH(1) BASH(1) NAME bash - GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”) 概述(SYNOPSIS) bash [option ...

  9. bash配置文件

    bash的配置文件 一.shell的两种登录方式: 1.交互式登录: (1)直接通过终端输入账号密码登录 (2)使用"su - UserName" 切换的用户 执行顺序:/etc/ ...

随机推荐

  1. notepad++ 插件大全

    Explorer 资源管理器 Colour Picker 拾色器 SecurePad  加密工具 HTMLTag  NppExport  导出为特殊格式 Simple script  AHKExtLe ...

  2. redis 大批量数据插入导致MISCONF Redis is configured to save RDB snapshots的解决

    PS:之前写过一遍,那个方法没有彻底解决,现找到真正的解决方法 环境:redis 3.2.100 windows版(注意!!!这是关键),win10,redis客户端spring boot 2.0.7 ...

  3. 【机器学习实战】第2章 K-近邻算法(k-NearestNeighbor,KNN)

    第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类的. KNN 场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作 ...

  4. 洛谷 P2905 [USACO08OPEN]农场危机Crisis on the Farm

    题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每一堆里,30只奶牛一只踩在另一只的背上,叠成一座牛塔.牧场 里还有M(1 < ...

  5. MFC【exe】工程中的文件大致信息(翻译的)

    在工程文件夹中有个readme文件,下面是翻译过来的. ======================================================================== ...

  6. SpringMVC Logback 设置及使用

    http://b6ec263c.wiz03.com/share/s/2SX2oY0nX4f32CY5ax1bapaL1WPGHe1OeQ-J2ijprB04A67k

  7. [论文理解] Rapid-Object-Detection-using-a-Boosted-cascade-of-simple-features

    Rapid-Object-Detection-using-a-Boosted-cascade-of-simple-features 简介 文章是2001年发表的,是一篇很经典的Object Detec ...

  8. Array - Remove Element

    /** * 无额外空间.顺序可以被改变.不需要修改后面的数字. * @param nums 数组 * @param val 目标值 * @return nums中移除val后的长度 */ public ...

  9. HTML_5 (1 2 3的代码总结)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. java中Integer和int的区别

    亲看这里 例子: public class Test { public static void main(String[] args) { Integer i = new Integer(128); ...