Shell脚本编程

Shell脚本编程

关于脚本的调试

    bash -n /path/to/some_script

                           检测脚本中的语法错误

v  bash -x /path/to/some_script

                           调试执行

 

变量

变量:命名的内存空间

数据存储方式:

字符:

数值:整型,浮点型 v

变量:变量类型

   作用:

        1、数据存储格式

        2、参与的运算

        3、表示的数据范围

类型: 字符 数值:整型、浮点型

 

bash中变量的种类

根据变量的生效范围等标准:

    本地变量:生效范围为当前shell进程;对当前shell之外 的其它shell进程,包括当前shell的子shell进程均无效

本地变量

v 变量赋值:name=‘value’, v

   可以使用引用value:

       (1) 可以是直接字串; name=“root"

       (2) 变量引用:name="$USER"

       (3) 命令引用:name=`COMMAND`, name=$(COMMAND) v

变量引用:${name}, $name

    "":弱引用,其中的变量引用会被替换为变量值

    '':强引用,其中的变量引用不会被替换为变量值,而保

持原字符串 v

    显示已定义的所有变量:set v

    删除变量:unset name

环境变量:生效范围为当前shell进程及其子进程

环境变量

v 变量声明、赋值:

       export name=VALUE

       declare -x name=VALUE v

   变量引用:$name, ${name} v

   显示所有环境变量:

       export

       env

       printenv v

   删除:unset name v

   bash有许多内建的环境变量:PATH, SHELL, USRE,UID, HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1

局部变量:生效范围为当前shell进程中某代码片断(通常 指函数)

位置变量:$1, $2, …来表示,用于让脚本在脚本代码 中调用通过命令行传递给它的参数

    $1, $2, …:对应第1、第2等参数,shift [n]换位置

    $0: 命令本身

    $*: 传递给脚本的所有参数,全部参数合为一个字符串

    $@: 传递给脚本的所有参数,每个参数为独立字符串

    $#: 传递给脚本的参数的个数

    $@ $* 只在被双引号包起来的时候才会有差异

特殊变量:$?, $0, $*, $@, $#

只读变量:

    只能声时,但不能修改和删除

        readonly name

        declare -r name

 

示例:判断给出的文件的行数

    linecount="$(wc -l $1| cut -d' ' -f1)"

    echo "$1 has $linecount lines."

 

练习

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。

Shell脚本编程 

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

Shell脚本编程 

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

Shell脚本编程 

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

Shell脚本编程 

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

Shell脚本编程 

6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

Shell脚本编程 

7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

Shell脚本编程 

8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

Shell脚本编程 

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

Shell脚本编程 

 

原创文章,作者:xiaoqiang512,如若转载,请注明出处:http://www.178linux.com/35778

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-15 11:58
下一篇 2016-08-15 11:58

相关推荐

  • 马哥教育网络班22期+第8周课程练习 忍者乱太郎喻成

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 一个好的链接,主要的参考http://www.cnblogs.com/imapla/archive/2013/03/12/2955931.html简单的总结和自己的理解桥接器(network bridge),又称网桥,一种网络设备,负责网络桥接(network …

    Linux干货 2016-12-26
  • Linux学习小结 1

    一、描述计算机的组成及其功能 计算机由硬件和软件组成: 1、硬件组成又分为: 中央处理器(CPU):功能主要是解释计算机指令以及处理计算机软件中的数据, 中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)内部存储器(Me…

    Linux干货 2017-06-27
  • RAID详解

    测试机centos6.7 x86_64 一、RAID是什么     简单描述:RAID(Redundant Array of indenpensive Disk)独立磁盘冗余阵列:磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段或条带(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起…

    2016-02-14
  • FHS文件系统各目录功能

    / 根目录。 包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。 /boot 引导程序,内核等存放的目录。 这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件(例如grub,lilo以及相应的配置文件以及Linux操作系统内核相关文件(例如vmlinuz等一般都存放在这里。在最开始的启动阶…

    Linux干货 2016-10-20
  • etc的常见问答

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost tuser1]# cp -r /etc/skel/ /home/tuser1 [root@localhost tuser1]# chmod -R go= /home/tuser1/ [root…

    2017-12-26
  • 作业管理

    作业管理 ·Linux的作业控制:          前台作业:通过终端启动,且启动后一直占据终端;          后台作业:可通过终端启动,但启动后即转入后台运行(释放终端) ·如何让作业运行于…

    Linux干货 2016-09-11