`
huangjun_mail
  • 浏览: 118825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初学Shell

F# 
阅读更多

    最近一直在学习Shell,深感系统命令的博大精深,由其是管道和重定向更是惊叹不已。于是写了个小程序练练手:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->  1#CD管理系统
  2#!/bin/sh
  3#==========================
  4#定义全局变量
  5#cdinfopath:CD基本信息存储路径
  6#cdsongpath:CD歌曲存储文件路径
  7#temppath:临时文件路径
  8#pcdcode:CD代码
  9#==========================
 10cdinfopath="cdtfile.cdb"
 11cdsongpath="cdfile.cdb"
 12temppath="/tmp/cdb.$$"
 13pcdcode=""
 14
 15trap 'rm -f $temppath echo " 用户中断程序,系统现在退出!sleep 5" '  EXIT
 16
 17show_help()
 18{
 19    echo "暂时还没有帮助文档,请见谅!" 
 20    get_return 
 21}
 22
 23get_return()
 24{
 25    echo "请按任意键返回主菜单."
 26    read x
 27    return 0
 28}
 29
 30get_confirm()
 31{
 32    echo "你确定要执行操作?(y/n)"
 33    while true
 34    do
 35        read bResult
 36        case "$bResult" in
 37            Y | y ) return 0 ;;
 38            N | n ) return 1 ;;
 39            * )     
 40              echo "输入有误,请重试!"
 41        esac
 42    done
 43}
 44
 45#初始化
 46init()
 47{
 48    rm -rf $temppath
 49    if [ ! -f $cdinfopath ] ; then
 50        touch $cdinfopath
 51    fi
 52    if [ ! -f $cdsongpath ] ; then
 53        touch $cdsongpath
 54    fi
 55    
 56}
 57#插入CD基本信息
 58 insert_cd_basinfo()
 59{
 60     echo $* >> $cdinfopath
 61}
 62#插入歌曲
 63insert_cd_songs()
 64{
 65    echo $* >> $cdsongpath
 66}
 67is_exist_cdcode()
 68{
 69    local cdcode=$@
 70    grep "^${cdcode%%,}" "$cdinfopath" > $temppath
 71    set $(wc -$temppath)
 72    num="$1"
 73    if [ "$num" -gt 0 ];then
 74       return 0
 75    else
 76       return 1
 77        fi
 78}
 79
 80#添加歌曲
 81add_songs()
 82{
 83    local cdcode=$@
 84    local song=""
 85    local songnum=1
 86    clear
 87    echo "添加CD$cdcode的歌曲:"
 88    echo "<<返回主菜单(q\\Q)"
 89    while true
 90    do
 91       echo "请输入第$songnum首歌曲名称:"
 92       read temp
 93       songname=${temp%%,}
 94       if [ -"$songname" ] || [ "$temp" != "$songname" ];then
 95           echo "歌曲名称不能为空,且不能带有特殊符号逗号"
 96       else 
 97          if [ "$songname" != "q" ] && [ "$songname" != "Q" ];then
 98            songname=${songname%%,}
 99            song="$cdcode,$songnum,$songname"
100           insert_cd_songs "$song"
101            songnum=$(($songnum+1))
102          else
103             break
104          fi
105       fi           
106    done
107    if [ "$songnum" -gt 1 ];then
108       return 0
109    else
110       return 1
111    fi
112}
113#列出CD
114list_cd()
115{
116    local cdcode=$@
117    local cdname=""
118    local cdauthor=""
119    grep "^${cdcode%%,}" "$cdinfopath" > $temppath
120    IFS=","
121    read  cdcode cdname cdauthor <  "$temppath"
122     IFS=" "
123        echo "CD代码:$cdcode, CD名称:$cdname, CD作者:$cdauthor"
124    grep "^${cdcode%%,}" "$cdsongpath" > $temppath
125    echo "歌曲列表:"
126    cut -f 2- --d , "$temppath"
127    get_return
128}
129#删除CD
130rmove_cd()
131{
132   local cdcode=$@
133   grep -"^${cdcode%%,}" "$cdinfopath" > $temppath
134   mv -f $temppath $cdinfopath
135   grep -"^${cdcode%%,}" "$cdsongpath" > $temppath
136   mv -f $temppath $cdsongpath
137   echo "成功删除CD:$cdcode"
138}
139find_cd()
140{
141   local cdcode=""
142   while true
143   do
144    # clear
145     echo "请输入CD代码:"
146     echo "<<返回主菜单(q\\Q)"
147     read temp
148     cdcode=${temp%%,}
149     if [ -"$cdcode" ] ; then
150          echo "CD代码不能为空!请重新输入!"
151     else
152          if [ "$cdcode"  = "q" ] || [ "$cdcode" = "Q" ];then
153             break
154          else
155                  if is_exist_cdcode $cdcode;then
156                     pcdcode="$cdcode"
157                     return 0
158                  else
159                     pcdcode=""
160               echo "没有查找到相关CD!"   
161                  fi 
162          fi
163      fi
164   done      
165   return 1
166}
167#添加CD
168add_cd()
169{
170    clear
171    local cdcode=""   #CD代码
172    local cdname=""   #CD名称
173    local cdauthor="" #CD作者
174    echo "添加CD:"
175    while true
176    do
177        echo "请输入CD代码:"
178        read temp
179        cdcode=${temp%%,}
180        if [ -"$cdcode" ];then
181          echo "CD代码不能为空!请重新输入!"    
182        else
183           if is_exist_cdcode "$cdcode" ;then
184             echo "CD代码:$cdcode已经存在,请重新输入!"
185           else
186                break
187           fi
188        fi
189    done
190    
191    echo "请输入CD名称:"
192    read temp
193    cdname=${temp%%,}
194    
195    echo "请输入CD作者:"
196    read temp
197    cdauthor=${temp%%,}
198    
199    echo "你输入的CD基本信息:"
200    echo "代码:$cdcode,名称:$cdname,作者:$cdauthor"
201    
202     if [ -"$cdcode$cdname$cdauthor"  ] ; then
203       get_confirm  && {
204                 local baseinfo="$cdcode,$cdname,$cdauthor"
205             #插入CD基本信息
206             insert_cd_basinfo    "$baseinfo"
207             #添加歌曲
208color: #00800
分享到:
评论

相关推荐

    MATLAB-四连杆机构的仿真+项目源码+文档说明

    <项目介绍> - 四连杆机构的仿真 --m3_1.m: 位置问题求解 --m2_1.m: 速度问题求解 --FourLinkSim.slx: Simlink基于加速度方程的仿真 --FourLinkSim2.slx: Simscape简化模型仿真 --FourLinkSim3.slx: Simscape CAD模型仿真 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    ridge_regression:用于岭回归的python代码(已实现以预测下个月的CO2浓度)

    ridge_regression 用于岭回归的python代码(已实现以预测下个月的CO2浓度) 资料可用性 文件 Ridge.py :标准函数和Ridge回归函数window_make.py :使用滑动窗口方法制作大小为p(窗口大小)的时间序列列表。 Final_version.ipynb :使用Co2数据对代码进行实验

    Polygon3-3.0.8-cp35-cp35m-win_amd64.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    【java毕业设计】风俗文化管理系统源码(ssm+mysql+说明文档+LW).zip

    功能说明: 系统主要分为系统管理员和用户两个部分,系统管理员主要功能包括首页,个人中心,用户管理,节日风俗管理,饮食风俗管理,服饰风俗管理,礼仪风俗管理,信仰风俗管理,建筑风俗管理,我的收藏管理,留言板管理,论坛管理,系统管理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    中国城市温度历史数据(2000-2020)-最新全集.zip

    中国城市温度历史数据(2000-2020)-最新全集.zip

    中国土地利用现状遥感监测数据(1km)-最新.zip

    中国土地利用现状遥感监测数据(1km)-最新.zip

    pgmagick-0.7.5-cp35-cp35m-win_amd64.whl.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    yolo算法-香烟盒子数据集-320张图像带标签-.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

    java资源Google API for Java

    java资源Google API for Java提取方式是百度网盘分享地址

    中国分地区地级市泰尔指数数据集(2000-2019).zip

    中国分地区地级市泰尔指数数据集(2000-2019).zip

    【java毕业设计】高职院校教学中心可视化教学分析系统源码(ssm+mysql+说明文档).zip

    环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    【java毕业设计】整体衣柜定制系统源码(ssm+mysql+说明文档).zip

    环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    【java毕业设计】房屋出租系统源码(ssm+mysql+说明文档+LW).zip

    功能说明: 系统功能实现了首页,房源信息,交流论坛,公告资讯,个人中心,后台管理等功能。系统的后台实现了个人中心,用户管理,房东管理,房源类型管理,房源信息管理,在线咨询管理,预约信息管理,订单信息管理,签订信息管理,申请退租管理,交流论坛,系统管理等功能的添加、删除和修改。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    yolo算法-电线杆数据集-1493张图像带标签-.zip

    yolo算法-电线杆数据集-1493张图像带标签-.zip;yolo算法-电线杆数据集-1493张图像带标签-.zip;yolo算法-电线杆数据集-1493张图像带标签-.zip

    安装包eclipse-jee-neon-3-win32-x86-64

    安装包eclipse-jee-neon-3-win32-x86_64提取方式是百度网盘分享地址

    param-1.12.2-py2.py3-none-any.whl.rar

    PartSegCore_compiled_backend-0.12.0a0-cp36-cp36m-win_amd64.whl.rar

    Pillow_SIMD-6.0.0.post0+avx2-cp27-cp27m-win_amd64.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    peewee-3.14.10-cp37-cp37m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    中国各省GDP及农业主要指标数据集(1999-2019).zip

    中国各省GDP及农业主要指标数据集(1999-2019).zip

    ‌Nginx事件驱动模型深度解析‌

    ‌Nginx事件驱动模型深度解析‌

Global site tag (gtag.js) - Google Analytics