精华内容
下载资源
问答
  • linux下shell脚本编程1

    2021-05-12 09:06:38
    1、 shell脚本是什么它是一种脚本语言,并非编程语言。可以使用一些逻辑判断、循环等语法。可以自定义子函数,是系统命令的集合。shell脚本可以实现自动化运维,大大增加我们的工作效率。2、shell脚本结构以及执行...

    1、 shell脚本是什么

    它是一种脚本语言,并非编程语言。

    可以使用一些逻辑判断、循环等语法。

    可以自定义子函数,是系统命令的集合。

    shell脚本可以实现自动化运维,大大增加我们的工作效率。

    2、shell脚本结构以及执行方法

    开头行指定bash路径: #! /bin/bash

    以#开头的行作为解释说明

    #注释自己的脚本内容,方便自己查阅;utf8字符集,支持中文;

    脚本的名字以.sh结尾,用于区分这是一个shell脚本

    执行脚本方式有两种:

    chmod a+x 1.sh    添加x执行权限;

    ./1.sh 可以直接执行,或者写绝对路径/root/shell/1.sh

    如果没有执行权限可以 bash 1.sh    或 sh 1.sh

    bash -x 1.sh 可以查看脚本执行过程

    实验练习:[root@localhost shell]# cat 1.sh

    #!/bin/bash

    #这是我的第一个脚本

    echo "hello world"[root@localhost shell]# ls -l

    -rw-r--r-- 1 root root 60 6月  16 19:28 1.sh

    [root@localhost shell]# chmod a+x 1.sh

    [root@localhost shell]# ls -l

    -rwxr-xr-x 1 root root 60 6月  16 19:28 1.sh

    [root@localhost shell]# ./1.sh

    hello world

    [root@localhost shell]# /root/shell/1.sh

    hello world

    [root@localhost shell]# /bin/sh 1.sh

    hello world

    [root@localhost shell]# bash -x 1.sh

    + echo 'hello world'

    hello world

    执行bash和sh是一样的,sh是bash的软连接文件;[root@localhost ~]# ls -l /bin/bash

    -rwxr-xr-x. 1 root root 871700 10月 16 2014 /bin/bash

    [root@localhost ~]# ls -l /bin/sh

    lrwxrwxrwx. 1 root root 4 3月   4 00:59 /bin/sh -> bash

    3、学会date命令的用法

    date  +%Y-%m-%d     date +%y-%m-%d 年月日

    date  +%Y-%m-%d = date +%F 年月日

    date  +%H:%M:%S = date +%T 时间

    date +%s  时间戳

    date -d @1434248742    根据时间戳算出当前时间

    date -d "+1day" 一天后    date -d "-1day" 一天前

    date -d  "-1month" 一月前

    date -d  “-1min” 一分钟前

    date +%w     date +%W 星期

    实验练习:[root@localhost shell]# date +%y

    15

    [root@localhost shell]# date +%Y

    2015

    [root@localhost shell]# date +%m

    06

    [root@localhost shell]# date +%d

    16

    [root@localhost shell]# date +%H

    14

    [root@localhost shell]# date +%M

    01

    [root@localhost shell]# date +%S

    54

    从1970年 01月01日0点0分开始算起到现在多少秒;[root@localhost shell]# date +%s

    1434434874

    [root@localhost shell]# date -d @1434434874

    2015年 06月 16日 星期二 14:07:54 CST

    CST是中国时间 +8小时[root@yonglinux shell]# date -d @0

    1970年 01月 01日 星期四 08:00:00 CST

    [root@localhost shell]# date +%F

    2015-06-16

    [root@localhost shell]# date +%T

    14:04:17

    [root@localhost shell]# date +%Y-%m-%d

    2015-06-16

    [root@localhost shell]# date +"%Y-%m-%d %H:%M:%S"

    2015-06-16 14:05:13

    [root@localhost shell]# date +"%F %T"

    2015-06-16 14:05:38

    周二[root@localhost shell]# date +%w

    2

    今年的第多少周,24周[root@localhost shell]# date +%W

    24

    全年有多少周,52周;[root@localhost shell]# echo "365/7" | bc

    52[root@localhost shell]# date -d "-1 day"

    2015年 06月 15日 星期一 14:16:31 CST

    [root@localhost shell]# date -d "-1 day" +"%F %T"

    2015-06-15 14:19:13

    [root@localhost shell]# date -d "+1 day" +"%F %T"

    2015-06-17 14:19:22

    [root@localhost shell]# date -d "+1 month" +"%F %T"

    2015-07-16 14:19:31

    [root@localhost shell]# date -d "+1 year" +"%F %T"

    2016-06-16 14:19:39

    [root@localhost shell]# date -d "+1 week" +"%F %T"

    2015-06-23 14:19:45

    [root@localhost shell]# date -d "-10 hour" +"%F %T"

    2015-06-16 04:19:59

    [root@localhost shell]# date -d "-10 min" +"%F %T"

    2015-06-16 14:10:15

    [root@localhost shell]# date -d "-10 sec" +"%F %T"

    2015-06-16 14:20:14

    4、shell脚本中的变量

    当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替。

    使用条件语句时,常常使用变量    if [ $a -gt 1 ]; then ... ; fi

    引用某个命令的结果时,用变量替代   n=`wc -l 1.txt`

    写和用户交互的脚本时,变量也是必不可少的  read -p "Input a number: " n; echo $n

    如果没写这个n,可以直接使用$REPLY

    内置变量 $0, $1, $2,$#    $0表示脚本本身,$1 第一个参数,$2 第二个参数,$#表示参数的个数;

    数学运算a=1;b=2; c=$(($a+$b))  或者 c=$[$a+$b]

    实验练习:

    引用某个命令的结果,使用变量代替[root@localhost shell]# file=`which yum`

    [root@localhost shell]# echo $file

    /usr/bin/yum

    [root@localhost shell]# rpm -qf $file

    yum-3.2.29-60.el6.centos.noarch

    变量只在当前shell下生效,子shell不会生效;

    要想子shell也生效,使用export file 声明变量;

    用户交互的变量:[root@localhost shell]# cat 2.sh

    #!/bin/bash

    #与用户交互的变量

    read -p "请输入一个数字:" num

    echo $num

    [root@localhost shell]# sh 2.sh

    请输入一个数字:333

    333

    参数的变量:[root@localhost shell]# cat 3.sh

    #!/bin/bash

    #关于参数的变量

    echo "\$1=$1"

    echo "\$2=$2"

    echo "\$3=$3"

    echo "\$#=$#"

    echo "\$0=$0"

    [root@localhost shell]# sh 3.sh ABC linux world

    $1=ABC

    $2=linux

    $3=world

    $#=3

    $0=3.sh

    数值变量:[root@localhost shell]# a=1;b=2

    [root@localhost shell]# c=$a+$b

    [root@localhost shell]# echo $c

    1+2

    [root@localhost shell]# c=$[$a+$b]

    [root@localhost shell]# echo $c

    3

    [root@localhost shell]# c=$(($a+$b))

    [root@localhost shell]# echo $c

    3

    5、shell中的逻辑判断

    格式1:if 条件 ; then 语句; fi

    格式2:if 条件; then 语句; else 语句; fi

    格式3:if …; then … ;elif …; then …; else …; fi

    逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等;注意到处都是空格。

    可以使用 &&并且 || 或者 结合多个条件

    大于>gt    (greater than)

    小于< lt     (less than)

    大于等于 >= ge

    小于等于 <=  le

    等于    ==eq    (equal)

    不等于   != ne

    实验练习:[root@localhost shell]# cat if.sh

    #!/bin/bash

    #if判断语句,条件为真,打印true;

    if :

    then

    echo true

    fi

    [root@localhost shell]# sh if.sh

    true

    if判断语句2;[root@localhost shell]# cat if2.sh

    #!/bin/bash

    #if判断语句,条件为真,返回true;

    if [ 1 == 1 ]

    then

    echo "true"

    fi

    [root@localhost shell]# sh -x if2.sh

    + '[' 1 == 1 ']'

    + echo true

    true

    [root@localhost shell]# sh if2.sh

    true

    if判断语句3;[root@localhost shell]# cat if3.sh

    #!/bin/bash

    #if判断语句,条件为真返回true,条件为假,返回false;

    if [ "1" == "2" ]

    then

    echo "true"

    else

    echo "false"

    fi

    [root@localhost shell]# sh if3.sh

    false

    变量,进行比较[root@localhost shell]# cat if4.sh

    #!/bin/bash

    #if判断语句,变量进行比较;

    a=1

    if [ "$a" == "2" ]

    then

    echo "true"

    else

    echo "false"

    fi

    [root@localhost shell]# sh -x if4.sh

    + a=1

    + '[' 1 == 2 ']'

    + echo false

    false

    多个判断要加elif[root@localhost shell]# cat if5.sh

    #!/bin/bash

    #if判断语句,多个判断使用elif;

    a=1

    if [ "$a" == "2" ]

    then

    echo "true"

    elif [ "$a" -lt 10 ]

    then

    echo "no false"

    else

    echo "false"

    fi

    [root@localhost shell]# sh if5.sh

    no false

    [ $a -lt 3 ] 也可以这样代替 (($a<3));使用方括号请一定注意空格;[root@localhost shell]# a=1;if(($a<3)); then echo OK;fi

    OK

    [root@localhost shell]# a=1;if [ $a -lt 3 ]; then echo OK;fi

    OK

    && 并且   前面的执行成功后才执行后面的;

    || 或者   前面的执行不成功执行后面的;[root@localhost shell]# a=5

    [root@localhost shell]# if [ $a -lt 10 ]&&[ $a -gt 2 ];then echo OK;fi

    OK

    [root@localhost shell]# if [ $a -lt 10 ]||[ $a -gt 2 ];then echo OK;fi

    OK

    奇数偶数判断,输入的数字除以2,余数为0为偶数,非0为奇数;[root@yonglinux shell]# cat 4.sh

    #!/bin/bash

    read -p "enter a number:" n

    n1=$[$n%2]

    if [ $n1 -eq 0 ]

    then

    echo "你输入的数字是偶数"

    else

    echo "你输入的数字是奇数"

    fi

    [root@yonglinux shell]# sh 4.sh

    enter a number:23

    你输入的数字是奇数

    [root@yonglinux shell]# sh 4.sh

    enter a number:90

    你输入的数字是偶数

    判断输入的是否是数字,不是数字的直接退出;数字的话判断奇数或偶数;

    `echo $n|grep -c '[^0-9]'`    匹配输入的字符为非数字的行数,如果为1说明不是数字。[root@localhost shell]# cat 5.sh

    #!/bin/bash

    #判断输入的是否是数字,不是数字的直接退出;数字的话判断是奇数或偶数;

    read -p "请输入一个数字:" n

    n2=`echo $n|grep -c '[^0-9]'`

    if [ $n2 -eq 1 ]

    then

    echo "你输入的不是纯数字,请重新输入"

    exit 1

    fi

    n1=$[$n%2]

    if [ $n1 -eq 0 ]

    then

    echo "你输入的数字是偶数"

    else

    echo "你输入的数字是奇数"

    fi

    [root@localhost shell]# sh 5.sh

    请输入一个数字:abc

    你输入的不是纯数字,请重新输入

    [root@localhost shell]# sh 5.sh

    请输入一个数字:323

    你输入的数字是奇数

    6、if 判断文件、目录属性

    [ -f file ]判断是否是普通文件,且存在

    [ -d file ] 判断是否是目录,且存在

    [ -e file ] 判断文件或目录是否存在

    [ -r file ] 判断文件是否可读

    [ -w file ] 判断文件是否可写

    [ -x file ] 判断文件是否可执行

    实验练习:

    1.sh存在的话执行后面的[root@localhost shell]# [ -f 1.sh ] && echo "1.sh exist"

    1.sh exist

    21.sh不存在执行后面的。[root@localhost shell]# [ -f 21.sh ] || echo "1.sh not exist"

    1.sh not exist

    判断文件是否存在[root@localhost shell]# cat test.sh

    #!/bin/bash

    #判断1.sh是否存在;

    if [ -e 1.sh ]

    then

    echo "1.sh exist"

    else

    echo "1.sh not exist"

    fi

    [root@localhost shell]# sh test.sh

    1.sh exist

    exec的用法,结合date变量实验

    exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。[root@localhost shell]# cat date.sh

    #!/bin/bash

    #exec的用法,结合date变量实验;

    d=`date +%F`

    exec >/tmp/$d.log 2>&1

    echo "Begin at `date`"

    ls /tmp/abc

    cd /ddd

    echo "End at `date`"[root@localhost shell]# sh date.sh

    [root@localhost shell]# cat /tmp/2015-06-16.log

    Begin at 2015年 06月 16日 星期二 16:49:54 CST

    ls: 无法访问/tmp/abc: 没有那个文件或目录

    date.sh: line 7: cd: /ddd: 没有那个文件或目录

    End at 2015年 06月 16日 星期二 16:49:54 CST

    exec >/tmp/$d.log 2>&1  表示执行下面的行,输出正确或错误的信息都写到/tmp/目录下 日期.log里面;

    展开全文
  • 前面我发了不少关于linux 的文章,今天也是一样,将分几篇文章系统化的讲讲shell脚本编程。废话不多说,走起走起! 首先说一下shell脚本是什么。简单来说,Shell脚本与Windows/Dos的批处理相似,就是把一个或多个...

    c1482e055b940e404bfd56b6140acca8.gif

    哈喽,大家好,我是Adam。前面我发了不少关于linux 的文章,今天也是一样,将分几篇文章系统化的讲讲shell脚本编程。废话不多说,走起走起!        首先说一下shell脚本是什么。简单来说,Shell脚本与Windows/Dos下的批处理相似,就是把一个或多个执行命令写到文件里,等到需要运行这些命令时,只需要运行该文件就可以了。shell脚本的好处也有很多:比如自动化管理,自动数据备份,监控日志等等。。。

    shell脚本是以行为单位,在执行脚本的时候会分解成一行一行执行,shell脚本主要由注释、命令、变量组成。        现在就来新建一个shell脚本,使用vi就可以

    b4a7dcb0f88324ac2f48eefa4e63076b.png

    然后编辑一些内容,#为注释,然后下面是要执行的命令,这个大家应该都看得明白,然后保存退出

    b830b217faf486f4339ef24829ed5d8a.png

    如何运行脚本呢,使用sh就可以了,sh空格后面接上shell脚本文件的名称就可以了

    e7221c1b9a96281327f78cac7db6cf5a.png

    可以看到,运行shell脚本文件就直接运行了里面ping的命令

    不止可以执行一个命令,可以执行多个命令

    89d292576b4d14e968419fc4eecb4dd1.png

    通过换行的方式,就可以让该脚本分别运行三个命令

    158234e5dd56fe175ac6e68afa52efa2.png

    再来举一个例子,我们先建立一个test.txt的文本文件,然后在文本文件中写上”Hello,world!“,最后再把填入的内容显示出来

    7e7b753f1091b35316655594b037c8c0.png

    测试一下

    cb861de7cc1c5533af8cf839b45e2cdd.png

    测试没有问题

    今天的shell脚本就讲到这里,主要是讲了什么是shell脚本,shell的作用、创建和使用。下一篇主要来讲一下变量和变量的使用。好了,大家再见!

    你会喜欢

    展开全文
  • zmj27404 于 2012-06-11 16:48:29发表: 我想知道,linux下怎么下载?? 于 2012-06-03 19:54:34发表: !!!!!!!!!!! 小楠1109 于 2012-04-18 22:16:47发表: 下来看看 噤裹 于 2012-04-13 12:32:16发表: 先收藏了! ...

    godl8 于 2015-06-19 16:53:17发表:

    thank for share

    godl8 于 2015-06-19 16:53:15发表:

    thank for share

    lonhasmanxt0 于 2014-11-26 16:53:42发表:

    床,你放开我,不要这样子,侍儿扶起娇无力,用什么浏览器看片?UC看片没广告!,我是一个要上班的人

    int_ws 于 2014-11-03 20:31:57发表:

    thanks for your sharing

    ksc10 于 2014-09-07 11:19:34发表:

    [i=s] 本帖最后由 ksc10 于 2014-9-7 12:06 编辑 [/i]

    好吧 可以下载 就是速度不怎么快

    观天执天 于 2014-05-26 10:29:14发表:

    感谢万分

    于 2013-11-20 22:14:18发表:

    解压密码

    hwsmail 于 2013-09-02 09:53:33发表:

    学习学习

    ventism 于 2013-08-27 22:27:18发表:

    恩人哪,先下载

    于 2013-08-03 18:08:18发表:

    好人 要顶下

    于 2013-07-24 21:32:18发表:

    looklook

    jinlong1996 于 2013-07-24 10:02:46发表:

    ding!

    farseerlee 于 2013-07-15 13:14:15发表:

    ubuntu里没迅雷,下载不了...

    于 2013-07-14 10:22:58发表:

    阿三大神的

    crowdfox 于 2013-05-06 12:52:48发表:

    现在在学shell,好像还行嘛

    cbliang 于 2013-04-30 22:01:47发表:

    看看???

    zd199218 于 2013-04-30 02:40:45发表:

    刚下载 回去看看 谢谢啦

    星空下的传说 于 2012-12-30 14:02:27发表:

    Xinchen 于 2012-12-03 17:54:27发表:

    有你更精彩

    shouyu924 于 2012-11-27 21:40:18发表:

    感谢分享了。

    于 2012-11-05 23:05:53发表:

    看看啊

    xionghuia 于 2012-10-07 16:43:51发表:

    看看

    过路秋风 于 2012-09-20 16:16:17发表:

    留个脚印再说

    于 2012-09-18 16:42:42发表:

    谢谢楼主分享

    千里楼 于 2012-06-19 16:49:33发表:

    多谢

    q9479ajag 于 2012-06-19 14:14:40发表:

    支持楼主,支持楼主 长见识了

    清风飘0033 于 2012-06-13 02:44:14发表:

    谢谢楼主分享!要认真学习一下!

    zmj27404 于 2012-06-11 16:48:29发表:

    我想知道,linux下怎么下载??

    于 2012-06-03 19:54:34发表:

    !!!!!!!!!!!

    小楠1109 于 2012-04-18 22:16:47发表:

    下来看看

    噤裹 于 2012-04-13 12:32:16发表:

    先收藏了!

    kaka_425644 于 2012-02-02 10:31:21发表:

    支持支持

    5269 于 2011-12-08 13:49:54发表:

    看下了!

    乔木在南 于 2011-11-30 22:27:25发表:

    额 悲催的迅雷啊…… 下载不了诶…… lz好人,能不能给我发个邮箱 773746847@qq.com

    fire312923253 于 2011-07-18 14:18:26发表:

    谢谢楼主,但我现在的条件无法下载

    qihanzhong 于 2011-03-08 23:57:14发表:

    不错啊。谢谢啊

    shenchao90 于 2011-03-08 22:30:05发表:

    谢谢楼主分享。。。

    collegemiaomiao 于 2011-02-20 21:14:05发表:

    谢谢楼主分享!!!!!!!!!

    花开花败2011 于 2011-02-11 19:48:53发表:

    谢谢分享

    windwolff 于 2011-01-25 09:45:10发表:

    谢谢分享

    展开全文
  • Shell脚本编程-图书管理系统准备的数据库代码块前期准备进入页面主菜单展示图书查找图书添加图书编辑图书借书还书删除图书运行演示 准备的数据库 代码块 前期准备 #!/bin/bash #personal library managerment ...

    准备的数据库

    在这里插入图片描述

    代码块

    前期准备

    #!/bin/bash
    
    #personal library managerment system
    
    app_name='{0##*[\\/]}'
    app_version="1.0"
    bookdb=${1:-"books.db"}
    
    sysName="personal library managerment system"
    sysVersion="Version:$app_version"
    sysAuthor="${User}S20-HOULIN"
    sysDate=$(date +%F)
    
    Red=1
    Green=2
    Brown=3
    Blue=4
    Magenta=5
    Cyan=6
    White=7
    colors=($Red $Green $Grown $blue $Magenta $Cyan $White)
    
    Width=$(tput cols)
    Height=$(tput lines)
    
    bold=$(tput bold)
    rev=$(tput rev)
    normal=$(tput sgr0)
    
    center(){
    	tput cup $1 $(((Width-${#2})/2))
    }
    centerMessage(){
    	tput cup $1 $(((Width-$2)/2))
    }
    bold(){
    	echo -n ${bold}"$1"${normal}
    }
    
    color(){
    	echo -ne "\e[3${1}m${2}\e[0m"
    }
    
    boldColor(){
    	echo -ne "${bold}\e[3${1}m${2}\e[0m"
    }
    
    error(){
    	errTip='Wrong Input! Press any key to retry...'
    	center 26 "$errTip"; color $Red "$errTip"
    	read -n1 -s key
    }
    

    进入页面

    showFlash(){
    	tput clear
    	center 10 "$sysName"; boldColor $Brown "$sysName";
    	center 12 "$sysVersion"; echo -n "$sysVersion";
    	center 14 "$sysAuthor"; color $Green "$sysAuthor";
    	center 16 "$sysDate"; echo -n "$sysDate";
    	message="Press ENTER to continue..."
    	center 20 "$message"; color $Cyan "$message"
    	read -n1 key
    }
    

    主菜单

    showMain(){
    	error=0
    	while :; do
    		if [[ $error -eq 0 ]];then
    			tput clear
    			center 6 "Main Menu"; boldColor $Brown "Main Menu";
    			centerMessage 8 30;  bold "1:                  Show books"
    			centerMessage 10 30; bold "2:                  Find books"
    			centerMessage 12 30; bold "3:                   Add books"
    			centerMessage 14 30; bold "4:   Edit information of books"
    			centerMessage 16 30; bold "5:             Check out books"
    			centerMessage 18 30; bold "6:              Check in books"
    			centerMessage 20 30; bold "7:                Delete books"
    			centerMessage 22 30; bold "q:                        Exit"
    			message='Please inter your choice(1-7 or q):'
    			inputCol=$(((Width-${#message})/2+${#message}))
    			center 24 "$message"; color $Cyan "$message"
    		fi
    		read choice
    		case $choice in
    			1)		showBooks;	error=0;;
    			2)		findBooks;	error=0;;
    			3)		addBooks;	error=0;;
    			4)		editBooks;	error=0;;
    			5)		checkOut;	error=0;;
    			6)		checkIn;	error=0;;
    			7)		deleteBooks;error=0;;
    			[qQ]*)	tput clear;exit 0;;
    			*)		error $((infoHeight+2))
    					tput cup $((infoHeight)) $inputCol
    					tput ed;	error=1;;
    		esac
    	done
    }
    

    展示图书

    showBooks(){
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Show books"; boldColor $Brown "Show books"
    			centerMessage 8 30;  bold "1:show books that not borrowed"
    			centerMessage 10 30; bold "2:    show books that borrowed"
    			centerMessage 12 30; bold "3:              show all books"
    			centerMessage 14 30; bold "q:                   Main Menu"
    			message='enter your choice(1-3 or q):'
    			inputCol=$(((Width-${#message})/2+${#message}))
    			center 24 "$message";color $Cyan "$message"
    		fi
    		read choice
    		case $choice in
    			1)		showBook 1;;
    			2)		showBook 2;;
    			3)		showBook 3;;
    			[qQ]*)	tput clear;return 0;;
    			*)		error $((infoHeight+2))
    					tput cup $((infoHeight)) $inputCol
    					tput ed;error=1;;
    		esac
    	done
    }
    showBook(){
    	if [ ! -f $bookdb ];then
    		echo "The book database is empty."
    		return 1
    	fi
    	result=y
    	until [ "$result" = n ];do
    		tput clear
    		center 6 "Show book";boldColor $Brown "Show books"
    		case $1 in
    			1)	showIn;;
    			2)	showOut;;
    			3)	showAll;;
    		esac
    		backmessage="BACK"
    		center 24 "$backmessage";color $Cyan "$backmessage"
    		read result
    		case $result in
    			*)	tput clear;return 0;;
    		esac
    	done
    	
    }
    showIn(){
    	tput cup 9 50; boldColor $Blue "ID"
    	tput cup 9 65; boldColor $Blue "Title"
    	tput cup 9 95; boldColor $Blue "Author"
    	tput cup 9 110;boldColor $Blue "Tags"
    	awk 'BEGIN{i=10;FS = "%"}
    	$5~/in/{system("tput cup "i" 50");print $1;
    	system("tput cup "i" 65"); print $2;
    	system("tput cup "i" 95"); print $3;
    	system("tput cup "i" 110");print $4;
    	i++}' $bookdb
    }
    showOut(){
    	tput cup 9 30; boldColor $Blue "ID"
    	tput cup 9 45; boldColor $Blue "Title"
    	tput cup 9 75; boldColor $Blue "Author"
    	tput cup 9 90; boldColor $Blue "Tags"
    	tput cup 9 110;boldColor $Blue "Borrower"
    	tput cup 9 130;boldColor $Blue "Time"
    	awk 'BEGIN{i=10;FS = "%"}
    	$5~/out/{system("tput cup "i" 30");print $1;
    	system("tput cup "i" 45"); print $2;
    	system("tput cup "i" 75"); print $3;
    	system("tput cup "i" 90"); print $4;
    	system("tput cup "i" 110");print $6;
    	system("tput cup "i" 130");print $7;
    	i++}' $bookdb
    }
    showAll(){
    	tput cup 9 25; boldColor $Blue "ID"
    	tput cup 9 40; boldColor $Blue "Title"
    	tput cup 9 70; boldColor $Blue "Author"
    	tput cup 9 85; boldColor $Blue "Tags"
    	tput cup 9 105;boldColor $Blue "Status"
    	tput cup 9 120;boldColor $Blue "Borrower"
    	tput cup 9 135;boldColor $Blue "Time"
    	awk 'BEGIN{i=10;FS = "%"}
    	{system("tput cup "i" 25");print $1;
    	system("tput cup "i" 40"); print $2;
    	system("tput cup "i" 70"); print $3;
    	system("tput cup "i" 85"); print $4;
    	system("tput cup "i" 105");print $5;
    	system("tput cup "i" 120");print $6;
    	system("tput cup "i" 135");print $7;
    	i++}' $bookdb
    }
    

    查找图书

    findBooks(){
    	if [ ! -f $bookdb ];then
    		echo "The book database is empty."
    		return 1
    	fi
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Find books"; boldColor $Brown "Find books"
    			centerMessage 8 20;  bold "1:    Find by bookId"
    			centerMessage 10 20; bold "2:     Find by title"
    			centerMessage 12 20; bold "3:    Find by author"
    			centerMessage 14 20; bold "4:      Find by tags"
    			centerMessage 16 20; bold "q:         Main Menu"
    			message='enter your choice(1-3 or q):'
    			inputCol=$(((Width-${#message})/2+${#message}))
    			center 24 "$message";color $Cyan "$message"
    		fi
    		read choice
    		case $choice in
    			1)		byBookId;;
    			2)		byTitle;;
    			3)		byAuthor;;
    			4)		byTags;; 
    			[qQ]*)	tput clear;return 0;;
    			*)		error $((infoHeight+2))
    					tput cup $((infoHeight)) $inputCol
    					tput ed;error=1;;
    		esac
    	done
    }
    byBookId(){
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Find books"; boldColor $Brown "Find books"
    			message='Please input the bookId!'
    			center 10 "$message";color $Cyan "$message"
    		fi
    		tput cup 13 $((Width/2-5))
    		read bookId
    		tput clear
    		center 6 "Find books"; boldColor $Brown "Find books"
    		tput cup 9 50; boldColor $Blue "ID"
    		tput cup 9 65; boldColor $Blue "Title"
    		tput cup 9 95; boldColor $Blue "Author"
    		tput cup 9 105; boldColor $Blue "Tags"
    		awk -v bookId=$bookId 'BEGIN{i=11;FS = "%"}
    		$1~bookId{system("tput cup "i" 50");print $1;
    		system("tput cup "i" 65");print $2;
    		system("tput cup "i" 95");print $3;
    		system("tput cup "i" 105");print $4;
    		i++}' $bookdb
    		backmessage="BACK"
    		center 24 "$backmessage";color $Cyan "$backmessage"
    		read result
    		case $result in
    			*)	tput clear;return 0;;
    		esac
    	done
    }
    byTitle(){
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Find books"; boldColor $Brown "Find books"
    			message='Please input the title!'
    			center 10 "$message";color $Cyan "$message"
    		fi
    		tput cup 13 $((Width/2-10))
    		read title
    		tput clear
    		center 6 "Find books"; boldColor $Brown "Find books"
    		tput cup 9 50; boldColor $Blue "ID"
    		tput cup 9 65; boldColor $Blue "Title"
    		tput cup 9 95; boldColor $Blue "Author"
    		tput cup 9 105; boldColor $Blue "Tags"
    		awk -v title=$title 'BEGIN{i=11;FS = "%"}
    		$2~title{system("tput cup "i" 50");print $1;
    		system("tput cup "i" 65");print $2;
    		system("tput cup "i" 95");print $3;
    		system("tput cup "i" 105");print $4;
    		i++}' $bookdb
    		backmessage="BACK"
    		center 24 "$backmessage";color $Cyan "$backmessage"
    		read result
    		case $result in
    			*)	tput clear;return 0;;
    		esac
    	done
    }
    byAuthor(){
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Find books"; boldColor $Brown "Find books"
    			message='Please input the author!'
    			center 10 "$message";color $Cyan "$message"
    		fi
    		tput cup 13 $((Width/2-5))
    		read author
    		tput clear
    		center 6 "Find books"; boldColor $Brown "Find books"
    		tput cup 9 50; boldColor $Blue "ID"
    		tput cup 9 65; boldColor $Blue "Title"
    		tput cup 9 95; boldColor $Blue "Author"
    		tput cup 9 105; boldColor $Blue "Tags"
    		awk -v author=$author 'BEGIN{i=11;FS = "%"}
    		$3~author{system("tput cup "i" 50");print $1;
    		system("tput cup "i" 65");print $2;
    		system("tput cup "i" 95");print $3;
    		system("tput cup "i" 105");print $4;
    		i++}' $bookdb
    		backmessage="BACK"
    		center 24 "$backmessage";color $Cyan "$backmessage"
    		read result
    		case $result in
    			*)	tput clear;return 0;;
    		esac
    	done
    }
    byTags(){
    	error=0
    	while :; do
    		if [ $error -eq 0 ];then
    			tput clear
    			center 6 "Find books"; boldColor $Brown "Find books"
    			message='Please input the tags!'
    			center 10 "$message";color $Cyan "$message"
    		fi
    		tput cup 13 $((Width/2-5))
    		read tags
    		tput clear
    		center 6 "Find books"; boldColor $Brown "Find books"
    		tput cup 9 50; boldColor $Blue "ID"
    		tput cup 9 65; boldColor $Blue "Title"
    		tput cup 9 95; boldColor $Blue "Author"
    		tput cup 9 105; boldColor $Blue "Tags"
    		awk -v tags=$tags 'BEGIN{i=11;FS = "%"}
    		$4~tags{system("tput cup "i" 50");print $1;
    		system("tput cup "i" 65");print $2;
    		system("tput cup "i" 95");print $3;
    		system("tput cup "i" 105");print $4;
    		i++}' $bookdb
    		backmessage="BACK"
    		center 24 "$backmessage";color $Cyan "$backmessage"
    		read result
    		case $result in
    			*)	tput clear;return 0;;
    		esac
    	done
    }
    

    添加图书

    addBooks(){
    	tput clear
    	any="y"
    	while [ "$any" = "y" ];do
    		center 10 "Add books";boldColor $Brown "Add books"
    		tput cup 13 $((Width/2-10)); boldColor $Magenta "      ID: "
    		tput cup 15 $((Width/2-10)); boldColor $Magenta "   Title: "
    		tput cup 17 $((Width/2-10)); boldColor $Magenta "  author: "
    		tput cup 19 $((Width/2-10)); boldColor $Magenta "    Tags: "
    		tput cup 13 $((Width/2)); autoId
    		tput cup 15 $((Width/2)); read Title
    		tput cup 17 $((Width/2)); read Author
    		tput cup 19 $((Width/2)); read Tags
    		suremessage="Are you sure? [y(es)/n(0)/c(ancel)]: "
    		center 22 "$suremessage";color $Cyan "$suremessage"
    		read sure
    		BookId=$(autoId)
    		case $sure in
    			[yY])	echo "$BookId%$Title%$Author%#$Tags%in%" >>$bookdb;;
    			[nN])	continue;;
    			[cC]|*)	tput clear;return 0;;
    		esac
    		anymessage="Add anymore book?[y(es)/n(o)]:"
    		center 24 "$anymessage";color $Cyan "$anymessage"
    		read any
    	done
    }
    autoId(){
    	new=`awk 'BEGIN{FS="%"}{last=$1}END{print last}' $bookdb | awk 'BEGIN{FS="-"}{print $2+1}'	`
    	if [ ${#new} -eq 1 ];then
    		new="S20-0000$new"
    	elif [ ${#new} -eq 2 ];then
    		new="S20-000$new"
    	elif [ ${#new} -eq 3 ];then
    		new="S20-00$new"
    	elif [ ${#new} -eq 4 ];then
    		new="S20-0$new"
    	else
    		new="S20-$new"
    	fi
    	echo "$new"
    }
    

    编辑图书

    editBooks(){
    	tput clear
    	any="y"
    	while [ "$any" = "y" ];do
    		center 6 "Edit books";boldColor $Brown "Edit books"
    		centerMessage 10 16;bold "BookId:"
    		centerMessage 13 50;bold " Title:"
    		centerMessage 16 50;bold "Author:"
    		centerMessage 19 50;bold "  Tags:"
    		tput cup 10 $((Width/2));read bookId
    		BookId="S20.*"+"$bookId"
    		tput cup 10 $((Width/2))
    		awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $1}' $bookdb
    		tput cup 13 $((Width/2-15))
    		awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $2}' $bookdb
    		oldTitle=`awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $2}' $bookdb`
    		tput cup 16 $((Width/2-15))
    		awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $3}' $bookdb
    		oldAuthor=`awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $3}' $bookdb`
    		tput cup 19 $((Width/2-15))
    		awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $4}' $bookdb
    		oldTags=`awk -v BookId=$BookId 'BEGIN{FS="%"}$1~BookId{print $4}' $bookdb`
    		tput cup 13 $((Width/2+5)); boldColor $Blue "==>"
    		tput cup 16 $((Width/2+5)); boldColor $Blue "==>"
    		tput cup 19 $((Width/2+5)); boldColor $Blue "==>" 
    		tput cup 13 $((Width/2+15));read Title
    		tput cup 16 $((Width/2+15));read Author
    		tput cup 19 $((Width/2+15));read Tags
    		newTitle=${Title:-$oldTitle}
    		newAuthor=${Author:-$oldAuthor}
    		newTags=${Tags:-$oldTags}
    		suremessage="Are you sure? [y(es)/n(0)/c(ancel)]: "
    		center 24 "$suremessage";color $Cyan "$suremessage"
    		read sure
    		case $sure in
    			[yY])	sed -i "/S20.*$bookId/{s@$oldTitle@$newTitle@;s@$oldAuthor@$newAuthor@;s@$oldTags@$newTags@}" $bookdb;;
    			[nN])	continue;;
    			[cC]|*)	tput clear;return 0;;
    		esac
    		anymessage="Edit anymore book?[y(es)/n(o)]:"
    		center 26 "$anymessage";color $Cyan "$anymessage"
    		read any
    	done
    }
    

    借书

    checkOut(){
    	tput clear
    	any="y"
    	while [ "$any" = "y" ];do
    		center 6 "Check out books";boldColor $Brown "Check out books"
    		tput cup 9 40;  boldColor $Blue "ID"
    		tput cup 9 55;  boldColor $Blue "Title"
    		tput cup 9 85;  boldColor $Blue "Author"
    		tput cup 9 100; boldColor $Blue "Tags"
    		inMessage
    		tput cup 23 80; boldColor $Blue "  bookId:"
    		tput cup 24 80; boldColor $Blue "Borrower:"
    		tput cup 23 90; read bookId
    		tput cup 24 90; read Borrower
    		suremessage="Are you sure? [y(es)/n(0)/c(ancel)]: "
    		center 25 "$suremessage";color $Cyan "$suremessage"
    		read sure
    		case $sure in
    			[yY])	sed -i "/^$bookId/s#%in%%#%out%$Borrower%$sysDate#" $bookdb;;
    			[nN])	continue;;
    			[cC]|*)	tput clear;return 0;;
    		esac
    		anymessage="Borrow anymore book?[y(es)/n(o)]:"
    		center 26 "$anymessage";color $Cyan "$anymessage"
    		read any
    	done
    }
    inMessage(){
    	awk 'BEGIN{i=11;FS = "%"}
    	$5~/in/{system("tput cup "i" 40");print $1;
    	system("tput cup "i" 55");print $2;
    	system("tput cup "i" 85");print $3;
    	system("tput cup "i" 100");print $4;
    	i++}' $bookdb
    }
    
    

    还书

    checkIn(){
    	tput clear
    	any="y"
    	while [ "$any" = "y" ];do
    		center 6 "Check In books";boldColor $Brown "Check In books"
    		tput cup 9 40;  boldColor $Blue "ID"
    		tput cup 9 55;  boldColor $Blue "Title"
    		tput cup 9 85;  boldColor $Blue "Author"
    		tput cup 9 100; boldColor $Blue "Tags"
    		outMessage
    		tput cup 23 80; boldColor $Blue "  bookId:"
    		tput cup 23 90; read bookId
    		suremessage="Are you sure? [y(es)/n(0)/c(ancel)]: "
    		center 25 "$suremessage";color $Cyan "$suremessage"
    		read sure
    		case $sure in
    			[yY])	sed -i "/^$bookId/s#%out%.*#%in%%#" $bookdb;;
    			[nN])	continue;;
    			[cC]|*)	tput clear;return 0;;
    		esac
    		anymessage="Return anymore book?[y(es)/n(o)]:"
    		center 26 "$anymessage";color $Cyan "$anymessage"
    		read any
    	done
    }
    outMessage(){
    	awk 'BEGIN{i=11;FS = "%"}
    	$5~/out/{system("tput cup "i" 40");print $1;
    	system("tput cup "i" 55");print $2;
    	system("tput cup "i" 85");print $3;
    	system("tput cup "i" 100");print $4;
    	i++}' $bookdb
    }
    

    删除图书

    deleteBooks(){
    	tput clear
    	any="y"
    	while [ "$any" = "y" ];do
    		center 10 "Delete books";boldColor $Brown "Delete books"
    		deletemessage="please input the book ID that you want to delete:"
    		center 15 "$deletemessage"; boldColor $Magenta "$deletemessage"
    		centerMessage 17 10; echo -n "${bold}";read bookId
    		suremessage="Are you sure? [y(es)/n(0)/c(ancel)]: "
    		center 22 "$suremessage";color $Cyan "$suremessage"
    		read sure
    		case $sure in
    			[yY])	sed -i "/$bookId/d" $bookdb;;
    			[nN])	continue;;
    			[cC]|*)	tput clear;return 0;;
    		esac
    		anymessage="Delete anymore book?[y(es)/n(o)]:"
    		center 24 "$anymessage";color $Cyan "$anymessage"
    		read any
    	done
    }
    

    运行

    showFlash
    showMain
    

    运行就最后执行这两个函数就行了,各位小伙伴应该懂的。

    演示

    主界面

    在Linux终端执行脚本进入下方页面
    执行脚本之后进入该界面
    任意键进入主菜单
    回车之后进入主菜单

    展示图书

    1.展示没被借走的
    2.展示借走的
    3.展示所有图书
    展示图书
    没借走的图书
    借走的图书
    所有图书

    查找图书

    1.通过书号查找
    2.通过书名查找
    3.通过作者查找
    4.通过标签查找
    查找图书
    按书号查找
    按书号查找的结果
    按书名查找
    安树民查找结果
    按作者查找
    按作者查找结果
    按标签查找
    按标签查找结果

    添加图书

    自动生成书号
    添加书籍,书号自动生成
    输入书籍信息
    成功添加

    编辑图书

    书号位置输入书号最后的数字,回车后展示这本书的信息
    编辑书籍,输入书号最后的数字,显示书籍信息
    修改书籍信息
    成功修改

    借书

    只展示没被借走的图书借书,进入界面只显示没被借走的
    输入书号和借书人
    成功借走

    还书

    只展示被借走了的图书
    还书,进入界面只显示被借走的书籍
    还书成功
    删除图书
    删除图书
    输入书号
    删除图书成功

    展开全文
  • 什么是ShellShell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到...图所示用户、shell和操作系统的关系:Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,...
  • linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失。 第二章 第三章 1.man手册使用快捷键 使用空格键翻页 2.man -k ...
  • 这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分 :Linux 命令行,shell 脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的最新特性进行了全面更新...
  • 一、Linux命令行1.1 常用命令echo -n "hello" #不换行echo -e "hello\nworld"head -n2 data.txttail -n2 data.txtping 127.0.0.1 > ping.log & #置于后台运行jobs #查看后台作业fg #移置前台运行which ...
  • linux下shell脚本编程

    2021-06-26 20:41:07
    linux下shell脚本编程linux下shell脚本编程shell编程语言的介绍介绍shell脚本的重要性与应用场景shell简介常见的脚本语言:shell的优点shell应用场景:shell编写第一个脚本编写第一个shell脚本编写执行企业实战...
  • 本文是笔者整理的Linux新手学习Shell 脚本编程的五个经典例子,他们分别是绘制特殊图形,五颜六色的脚本,加密文件/目录,查看服务器利用率,查看硬盘使用情况及发送提示邮件。这两个例子在日常使...
  • 1.什么是ShellShell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入...图所示用户、shell和操作系统的关系:Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语...
  • Shell中变量的数据类型默认是字符串,是不支持数字运算的。下面这个例子想让a和b两个变量的值相加,可是运行结果发现两个变量的值并没有做相加,仅仅作为文本给打印了出来。[root@iZ25aj1q2ovZ ~]# a=10[root@iZ25...
  • 南京信息工程大学实验(实习)报告实验(实习)名称shell脚本编程实验(实习)日期得分指导教师系计算机专业计算机科学与技术年级班次姓名学号一·【实验目的】1、了解和熟悉创建并使用脚本的步骤。2、熟悉bash 的控制结构...
  • 以下是shell自动备份用的:主要功能:1)将pathSrc目录中的文件拷贝到pathDst目录中去。具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中。 -> 来两个循环,比较。不在fileDst的就拷贝过去...
  • 今天我要把我参与编写的这套《Linux命令行与shell脚本编程大全》免费分享出来,真正弘扬Linux开源精神! 01 资料目录 02 部分视频资料展示 03 如何获取?
  • linuxshell脚本实验报告.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《linuxshell脚本实验报告.doc》文档请在天天文库搜索。1、第二次实验内容一、实验名称:Linux下shell编程...
  • shell 也是操作系统中的一个软件它包在 linux 内核的外面,为用户和内核之间的交互提供了一个接口。系统中的命令用 shell 去解释shell 接收系统回应的输出并显示其到屏幕中bash = GNU Bourne-Again Shellshell 脚本...
  • ShellScript,Shell脚本与Windows/Dos的批处理类似,也便是用各类指令预先放入到一个文件中,便利一次性执行的一个程序文件,主要是便利办理员进行设置或许办理用的。可是它比Windows的批处理更强大,比用其他...
  • Linux编写shell脚本

    2021-05-11 14:05:55
    shell脚本打印乘法表#!/bin/bashi=1j=1t=0while [ $i -lt 10 ]dot=$jwhile [ $t -le $i ]doecho -n "$t*$i=$(($i*$t)) "t=$(($t+1))doneechoi=$(($i+1))done-le <= -lt = -gt>编写shell程序,该程序能接收用户...
  • Shell 脚本几种基本命令替换区别前言:因为工作需要,需要编写 shell script 。编写大量 shell script 时,累计了大量经验,也让自己开始迷糊几种函数输出调用的区别。后面和 LinuxCN 前辈们请教了一下这个问题,...
  • Linux Shell脚本编程--curl命令详解

    千次阅读 2020-12-24 23:23:21
    常用参数 curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。 -A:随意指定自己这次访问所宣称的自己的浏览器信息 -b/--cookie cookie字符串或文件读取位置,使用option来把上次的cookie...
  • shell脚本控制语句- 判断语句使用 if case- 循环语句的使用 for while判断语句判断语句使得我们脚本更加具有活性,通过判断,可以分析当前系统环境,条件允许做某些事情,条件不允许做某些事情shell脚本中判断可以...
  • Linuxshell脚本编程

    2021-02-23 15:55:33
    什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户... Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可直接调用linux命令。.java -> .class ...
  • 什么是Shell脚本示例看个例子吧:#!/bin/shcd ~mkdir shell_tutcd shell_tutfor ((i=0; i<10; i++)); dotouch test_$i.txtdone示例解释第1行:指定脚本解释器,这里是用/bin/sh做解释器的第2行:切换到当前用户的...
  • Linux典藏大系:Linux Shell命令行及脚本编程实例详解》共15章,分为两篇。主要内容包括:LinuxLinux Shell简介、初识Linux Shell、常用Shell (Bash)命令、Shell命令进阶、Shell编程基础、 Shell的条件执行、...
  • 环境变量一些命令shell脚本中经常出现各种环境变量,因此要写脚本,必须先来了解环境变量.常见的处理环境变量的命令,列举在下面set 用来显示本地变量env 用来显示环境变量export 用来显示和设置环境变量source 后面跟...
  • 1、第二次实验内容一、实验名称:Linux下shell编程二、实验类型:设计三、实验目的:1 熟悉Linux的shell几种变量使用2 熟练掌握Linux的shell编程几种结构3 熟练掌握Linux下shell脚本的编写四、实验准备参考教材,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,586
精华内容 35,434
关键字:

linux下shell脚本编程

linux 订阅