码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-07-28 11:58:50      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:图片   linu   centos7   blog   png   判断   配置   magedu   ack   

运行环境:centos7
一、shell脚本的简单介绍
shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
-- shell是一种脚本语言;
-- 可以使用逻辑判断、循环等语法;
-- 可自定义函数;
-- shell是系统命令的集合;
-- shell脚本可以实现自动化运维,能大大增加我们的运维效率
可以在当前系统查看当前默认shell

echo $SHELL
技术分享图片


二、shell脚本的变量

1、局部变量

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

技术分享图片

实验证明设置的变量只在当前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^.^ ~]#

技术分享图片

bash命令可以进入子shell,当前shell号为10933,查看变量依旧继承,继续进入‘孙子’shellshell号为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文件里面编辑)

技术分享图片

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

技术分享图片

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

技术分享图片

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


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 显示个数,将变量的值赋值给GESHU5Sum=$[$GESHU+$GESHU1+$GESHU2+$GESHU3+$GESHU4+$GESHU5](将五个文件的值进行加减操作,将变量值赋值给Sum
echo /etc/var/usr目录中共有$Sum个!!!!


技术分享图片

技术分享图片

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



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

标签:图片   linu   centos7   blog   png   判断   配置   magedu   ack   

原文地址:http://blog.51cto.com/13866901/2151319

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!