标签:图片 linu centos7 blog png 判断 配置 magedu ack
运行环境:centos7hell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。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,查看变量依旧继承,继续进入‘孙子’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文件里面编辑)
通过/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 显示个数,将变量的值赋值给GESHU5)Sum=$[$GESHU+$GESHU1+$GESHU2+$GESHU3+$GESHU4+$GESHU5](将五个文件的值进行加减操作,将变量值赋值给Sum)
echo /etc/var/usr目录中共有$Sum个!!!!
当然可以通过ls -a 命令直接列出所有文件,包括隐藏文件。
标签:图片 linu centos7 blog png 判断 配置 magedu ack
原文地址:http://blog.51cto.com/13866901/2151319