linux 脚本 实现,shell脚本基础 -----简单脚本的实现

本文介绍了Shell脚本的基础知识,包括其作为命令语言和程序设计语言的角色,以及如何创建和使用局部及全局变量。通过示例展示了如何在脚本中设置和使用变量,以及如何进行自动化运维,如文件操作和统计目录内容。同时,讨论了位置变量的概念,并提供了编写简单脚本的实例。
摘要由CSDN通过智能技术生成

运行环境:centos7

一、shell脚本的简单介绍

shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

-- shell是一种脚本语言;

-- 可以使用逻辑判断、循环等语法;

-- 可自定义函数;

-- shell是系统命令的集合;

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

可以在当前系统查看当前默认shell

echo $SHELL

ccd269fd38e181df2a344cefcfaf23dc.png

二、shell脚本的变量

1、局部变量

局部变量的作用域被限定在创建它们的shell中。local函数可以用来创建局部变量,但仅限于函数内使用。局部变量可以通过简单的赋予它一个值或一个变量名来设置,用declare内置函数来设置,或者省略也可。局部变量仅对当前shell有效,子shell不继承!可通过set命令查看所有的局部变量。

b6e0eedf4890f379fa8c94406aeef0d6.png

实验证明设置的变量只在当前shell有效。

2、全局变量

全局变量通常又称环境变量,以区别于局部变量,全局变量,顾名思义,不仅仅对当前的shell有效,也对子shell有效,export局部变量名称可以设置为全局变量。

export 变量=值

[root@localhost^.^ ~]#export Name="guodong"  (设置全局变量)

[root@localhost^.^ ~]#echo $Name

guodong

[root@localhost^.^ ~]#bash   (进入子shell)

[root@localhost^.^ ~]#echo $$(查看当前shell号)

10933

[root@localhost^.^ ~]#echo $Name

guodong

[root@localhost^.^ ~]#bash  (进入‘孙子’shell)

[root@localhost^.^ ~]#echo $$(查看当前shell号)

10962

[root@localhost^.^ ~]#echo $Name

guodong

[root@localhost^.^ ~]#

29ee17017bc7663390056803d107ee56.png

bash命令可以进入子shell,当前shell号为10933,查看变量依旧继承,继续进入‘孙子’shell,shell号为10962,查看变量仍然继承,故设置的为全局变量。

export设置的全局变量只在当前终端有效。

设置全局环境变量,对所有用户都生效etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell的设置。一般用于设置所有用户使用的全局变量。

/etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

修改/etc/profile文件后需要重新启动才能生效,也可用source命令使其立即生效

3、位置变量

就是Bash将传递给脚本的参数保存在位置变量中,以便于在脚本中引用这些参数

直接举例说明:

人生的第一个脚本

以后大家肯定会写大量的脚本,所以可以创建一个简单的脚本自动生成所需要的脚本文件,自动进入该文件编辑,并拥有标准格式。

#!/bin/bash(#!约定的标记,告诉系统使用哪一种shell)

echo "#!/bin/bash" >$1     (将双引号里面的内容添加到$1文件里面,如果有,则覆盖,没有就创建)

echo "# ------------------------------------------" >>$1 (追加内容到该$1文件里)

echo "#Filename: $1" >>$1

echo "# Revision: 1.0" >>$1

echo "# Date: $(date +"%F")" >>$1

echo "#Author: wang" >>$1

echo "#Email: wang@gmail.com" >>$1

echo "#Website: www.magedu.com" >>$1

echo "#Description:" >>$1

echo "#------------------------------------------" >>$1

echo "#helloworld" >>$1

echo " " >>$1

chmod +x $1(自动给$1文件添加权限)

vim + $1  (自动进入该$1文件里面编辑)

2d452afd57db37fd7a2a16dc3387a998.png

通过/root/bin/脚本文件名称  新创建的文件名称 执行脚本

a46c9e53b741c4c7fecdb0363358ad49.png

当执行时自动进入vim编辑该文件模式

aa4464c4a99b5c3b0d3ac28c9a6207db.png

就这样第一个脚本写好了!这也是一个位置变量的例子。(#后面是注释内容,执行脚本时系统不执行)

4、变量赋值

直接举例

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

通过上面创建的脚本可以快速创建一个新的标准的脚本文件。

该文件的内容如下:

#!/bin/bash

GESHU=$(ls -d /etc/*|wc -l)    (将查找的etc目录下所有文件(不包括隐藏文件)列出并通过wc -l 显示个数,将变量的值赋值给GESHU)

GESHU1=$(ls -d /etc/.*|wc -l) (将查找的etc目录下所有隐藏文件列出并通过wc -l 显示个数,将变量的值赋值给GESHU1)

GESHU2=$(ls -d /var/*|wc -l)   (将查找的var目录下所有文件(不包括隐藏文件)列出并通过wc -l 显示个数,将变量的值赋值给GESHU2)

GESHU3=$(ls -d /var/.*|wc -l)   (将查找的var目录下隐藏文件列出并通过wc -l 显示个数,将变量的值赋值给GESHU3)

GESHU4=$(ls -d /usr/*|wc -l)   (将查找的usr目录下所有文件(不包括隐藏文件)列出并通过wc -l 显示个数,将变量的值赋值给GESHU4)

GESHU5=$(ls -d /usr/.*|wc -l)   (将查找的usr目录下所有隐藏文件列出并通过wc -l 显示个数,将变量的值赋值给GESHU5)Sum=$[$GESHU+$GESHU1+$GESHU2+$GESHU3+$GESHU4+$GESHU5](将五个文件的值进行加减操作,将变量值赋值给Sum)

echo /etc/var/usr目录中共有$Sum个!!!!

cedce65df4864a98d2a7740f91dfde53.png

423b5dbfdfcfc3633340a9252a726915.png

当然可以通过ls -a 命令直接列出所有文件,包括隐藏文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值