ubuntu shell program
来源:互联网 发布:linux下配置mysql密码 编辑:程序博客网 时间:2024/05/21 15:44
由于我安装的ubuntu是英文版的,所以能写英文的地方我就直接用英文代替了;
codes are following:
#!/bin/sh
# A very simple shell for managing a CD collection
menu_choice=""
current_cd=""
title_file="title.cdb"
tracks_file="tracks.cdb"
temp_file=/tmp/cdb.$$
trap 'rm -f $temp_file' EXIT
get_return() {
echo -e "Press return \c"
read x
return 0
}
get_confirm() {
echo -e "Are you sure? \c"
while true
do
read x
case "$x" in
y|yes|Y|Yes|YES) return 0;;
n|no|N|No|NO) echo
echo "Cancelled"
return 1;;
*) echo "Please enter yes or no";;
esac
done
}
set_menu_choice() {
clear
echo "Options :-"
echo
echo " a) Add new CD"
echo " f) Fine CD"
echo " c) Count the CDs and tracks in the catalog"
if ["$cdcatnum"!=""];then
echo "l)List tracks on $cdtitle"
echo "r)Remove $cdtitle"
echo "u)Update track information for $cdtitle"
fi
echo "q)Quit"
echo
echo -e "Please enter choice then press return \c"
read menu_choice
return
}
insert_title() {
echo $* >> $title_file
return
}
insert_track() {
echo $* >> $tracks_file
return
}
add_record_tracks() {
echo "Enter track information for this CD"
echo "When no more tracks enter q"
cdtrack=1
cdttitle=""
while ["cdttitle"!="q"]
do
echo -e "Track $cdtrack,track title? \c"
read tmp
cdttitle=${tmp%%,*}
if ["$tmp"!="$cdttitle"];then
echo "Sorry,no commas allowed"
continue
fi
if [-n "$cdttitle"];then
if ["$cdttitle"!="q"];then
insert_track $cdcatnum,$cdtrack,$cdttitle
fi
else
cdtrack=$((cdtrack+1))
fi
cdtrack=$((cdtrack+1))
done
}
add_records() {
#Prompt for the initial information
echo -e "Enter catalog name \c"
read tmp
cdcatnum=${tmp%%,*}
echo -e "Enter title \c"
read tmp
cdtitle=${tmp%%,*}
echo -e "Enter type \c"
read tmp
cdtype=${tmp%%,*}
echo -e "Enter artist/composer \c"
read tmp
cdac=${tmp%%,*}
#check that information
echo About to add new entry
echo "$cdcatnum $cdtitle $cdtype $cdac"
#If confirmed then append it to the titles file
if get_confirm;then
insert_title $cdcatnum,$cdtitle,$cdtype,$cdac
add_record_tracks
else
remove_records
fi
return
}
find_cd() {
if ["$1"="n"];then
asklist=n
else
asklist=y
fi
cdcatnum=""
echo -e "Enter a string to search for in the CD titles \c"
read searchstr
if ["$searchstr"=""];then
return 0
fi
grep "$searchstr" $title_file >$temp_file
set $(wc -l $temp_file)
linesfound=$1
case "$linesfound" in
0) echo "sorry,nothing found"
get_return
return 0
;;
1) ;;
2) echo "Sorry,not unique."
echo "Found the following"
cat $temp_file
get_return
return 0
esac
IFS=","
read cdcatnum cdtitle cdtype cdac < $temp_file
IFS=" "
if [-z "$cdcatnum"];then
echo "Sorry,could not extract catalog field from $temp_file"
get_return
return 0
fi
echo
echo Catalog number: $cdcatnum
echo Title: $cdtitle
echo Type: $cdtype
echo Artist/Composer:$cdac
echo
get_return
if ["$asklist"="y"];then
echo -e "View track for this CD? \c"
read x
if ["$x"="y"];then
echo
list_tracks
echo
fi
fi
return 1
}
update_cd() {
if [-z "$cdcatnum"];then
echo "You must select a CD first"
find_cd n
fi
if [-n "$cdcatnum"];then
echo "Current tracks are:-"
list_tracks
echo
echo "This will re-enter the tracks for $cdtitle"
get_confirm && {
grep -v "^${cdcatnum}," $tracks_file > $temp_file
mv $temp_file $tracks_file
echo
add_record_tracks
}
fi
return
}
count_cds() {
set $(wc -l $title_file)
num_titles=$1
set $(wc -l $tracks_file)
num_tracks=$1
echo found $num_titles CDs,with a total of $num_tracks tracks
get_return
return
}
remove_records() {
if [ -z "$cdcatnum"];then
echo "You must select a CD first"
find_cd n
fi
if [-n "$cdcatnum"];then
echo "You are about to delete $cdtitle"
get_confirm && {
grep -v "^${cdcatnum}," $title_file >$temp_file
mv $temp_file $title_file
grep -v "^${cdcatnum}," $tracks_file >$temp_file
mv $temp_file $tracks_file
cdcatnum=""
echo Entry removed
}
get_return
fi
return
}
list_tracks() {
if ["$cdcatnum"=""];then
echo no CD selected yet
return
else
grep "^${cdcatnum}," $tracks_file >$temp_file
num_tracks=$(wc -l $temp_file)
if ["$num_tracks"="0"];then
echo "no tracks found for $cdtitle"
else {
echo
echo "$cdtitle :-"
echo
cut -f 2- -d , $temp_file
echo
}| ${PAGER:-more}
fi
fi
get_return
return
}
rm -f $temp_file
if [! -f $title_file];then
touch $title_file
fi
if [! -f $tracks_file];then
touch $tracks_file
fi
clear
echo
echo
echo "Mini CD manager"
sleep 1
quit=n
while ["$quit"!="y"];do
set_menu_choice
case "$menu_choice" in
a) add_records;;
r) remove_records;;
f) find_cd y;;
u) update_cd;;
c) count_cds;;
l) list_tracks;;
b)
echo
more $title_file
echo
get_return;;
q|Q) quit=y;;
*) echo "Sorry,choice not recognized";;
esac
done
rm -f $temp_file
echo "Finished"
exit 0
It is a very simple shell program from the book 《linux程序设计》.
Save the file with the name 'filename'.In terminal,you can use the command 'chmod +x filename',the you can use './filename' to process the file.
- ubuntu shell program
- Shell Program
- shell program
- windows shell program(1)
- windows shell program(2)
- windows shell program(3)
- windows bat shell program
- Shell program with C#
- linux shell program summary
- shell program 1
- shell script : stop program
- Ubuntu 13.10 run ia32 program
- ubuntu(system program problem detected)
- ubuntu System program problem detected
- Ubuntu "System program problem detected"
- The K Shell Program Guide(1)
- 在shell中call Java program...
- A tiny shell program with job control
- 记录cpu的使用情况和5分钟的平均负载
- js时间戳转为日期格式
- Android编程之解决android-support-v4打包问题
- SD tables
- C#与VC++数据类型对应关系
- ubuntu shell program
- 为VS2008安装STLport
- linux 内核初级教程-3
- Using Quaternion to Perform 3D rotations
- 谁是你生命中的贵人
- Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet 3.0+JSP 2.2深入剖析与实例应用
- 使用 Yum 变量
- MyEclipse中自动整合Spring3+Hibernate/JPA
- 怎样学习3.0