最近一直在学习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
#==========================
10
cdinfopath="cdtfile.cdb"
11
cdsongpath="cdfile.cdb"
12
temppath="/tmp/cdb.$$"
13
pcdcode=""
14
15
trap 'rm -f $temppath echo " 用户中断程序,系统现在退出!sleep 5" ' EXIT
16
17
show_help()
18
{
19
echo "暂时还没有帮助文档,请见谅!"
20
get_return
21
}
22
23
get_return()
24
{
25
echo "请按任意键返回主菜单
."
26
read x
27
return 0
28
}
29
30
get_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
#初始化
46
init()
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
#插入歌曲
63
insert_cd_songs()
64
{
65
echo $* >> $cdsongpath
66
}
67
is_exist_cdcode()
68
{
69
local cdcode=$@
70
grep "^${cdcode%%,}" "$cdinfopath" > $temppath
71
set $(wc -l $temppath)
72
num="$1"
73
if [ "$num" -gt 0 ];then
74
return 0
75
else
76
return 1
77
fi
78
}
79
80
#添加歌曲
81
add_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 [ -z "$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
114
list_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- -s -d , "$temppath"
127
get_return
128
}
129
#删除CD
130
rmove_cd()
131
{
132
local cdcode=$@
133
grep -v "^${cdcode%%,}" "$cdinfopath" > $temppath
134
mv -f $temppath $cdinfopath
135
grep -v "^${cdcode%%,}" "$cdsongpath" > $temppath
136
mv -f $temppath $cdsongpath
137
echo "成功删除CD:$cdcode"
138
}
139
find_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 [ -z "$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
168
add_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 [ -z "$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 [ -n "$cdcode$cdname$cdauthor" ] ; then
203
get_confirm && {
204
local baseinfo="$cdcode,$cdname,$cdauthor"
205
#插入CD基本信息
206
insert_cd_basinfo "$baseinfo"
207
#添加歌曲
208color: #00800
分享到:
相关推荐
本资源针对的是shell初学者,旨在通过实践案例帮助学习者掌握基本的shell命令和编程技巧。 首先,了解基础的shell命令至关重要。如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`touch`创建新...
本教程“Linux Shell从初学到精通”旨在引导初学者逐步掌握Shell编程的基本概念和高级技巧。 首先,我们从基础开始。在Linux环境中,Shell提供了命令行界面,用户可以通过输入命令来执行各种操作。学习Shell的第一...
初学shell 入门好书!!!! 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...
一款相当好用的shell攻略,很适合初学shell脚本的人群使用
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。...
**描述:“适合初学Shell编程的同学,简单易懂”** - **Shell 的定义**:Shell 是一种用于与操作系统进行交互的命令行接口,它允许用户通过输入命令来执行各种任务。 - **Shell 的类型**:Linux 系统中常用的 Shell...
但根据文件信息中的标题和描述,可以推断出本书内容涉及Linux Shell编程的基础知识和技能提升。下面将基于Linux Shell编程这一主题,详细说明相关知识点。 Linux Shell编程是学习Linux系统管理和自动化脚本的重要...
### shell脚本初学者使用知识点 #### 1. Shell基础概念 Shell是用户和操作系统之间的接口,它是一个命令行解释器,用来解释用户输入的命令。Shell脚本是包含一系列命令的文本文件,能够被Shell执行,以完成特定的...
本资源包含了从初学到精通的Shell编程源码,共计4-17全阶段的学习内容,旨在帮助用户深入理解并熟练掌握Shell编程技巧。 在学习Linux Shell编程的过程中,你将了解到以下核心知识点: 1. **基础语法**:了解Shell...
Linux Shell编程从初学到精通,帮助不会Linux的从0到1学习Linux以及shell脚本的编写和使用。
### 给Shell初学者的入门知识详解 #### 一、Shell程序基础 ##### 1.1 Shell程序概念 - **定义**: Shell程序本质上是一个包含了多条Shell或Linux命令的文件。 - **创建**: 使用文本编辑器(如VI)来编写Shell程序...
### Linux Shell 脚本学习指南 #### 一、Shell 编程的重要性 ...对于初学者而言,掌握这些基本概念和命令是进入 Shell 编程世界的良好开端。随着实践的增加,你将能够开发出更复杂的脚本来解决实际问题。
本文将详细介绍Shell脚本的基础知识,帮助初学者理解这一强大的工具。 首先,Shell是一个命令行接口,它由C语言编写,充当用户与Linux内核之间的桥梁。用户可以通过Shell来执行各种系统命令。Shell不仅是一种命令...
《Linux Shell从初学到精通第2版》是一本旨在帮助读者深入理解并熟练掌握Linux Shell编程的书籍。源代码作为书中的重要组成部分,为学习者提供了实践和探索的平台。在学习Linux Shell的过程中,理解并操作这些源代码...
本教程“Shell编程从入门到精通”旨在帮助初学者快速掌握Shell编程的核心技能,并逐步提升至高级水平。 1. **Shell基础** - **Shell类型**:不同的Linux发行版和Unix系统可能使用不同类型的Shell,如Bash(Bourne-...
### Linux Shell命令初学解析 #### 目标 - 了解Shell的概念及其作用 - 掌握Shell的常用命令 - 学会使用vi编辑器 #### 一、了解Shell **Shell** 是用户与Linux操作系统之间的重要接口,它允许用户通过命令行的...
初学者入门教程:Shell编程概述(一) 初学者入门教程:Shell编程概述(二) shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-...
对于初学者来说,了解和掌握Shell的使用是十分重要的,因为这能极大地提高在命令行环境中工作的效率。 首先,Shell程序是一种包含Linux或Unix命令的文本文件。通过文本编辑器如VI,你可以编写一系列命令,然后按照...
对于初学者来说,掌握Shell编程不仅可以提升日常操作效率,还能为深入学习系统管理、自动化运维打下坚实基础。 在24学时的教程中,你将逐步了解以下核心知识点: 1. **Shell介绍**:了解什么是Shell,它的作用以及...
说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总结一下...