`

shell基础概念和变量简介

 
阅读更多

 

学习shell的前置知识准备:

 

1 vi命令  .vimrc设置搞熟

2 100多个基本命令

3 基础/高端 网络服务都要会。

 

 

shell概念:

 

a) 是命令解释器,是操作系统最外层,负责直接和用户对话,

b) 将用户的输入解释给操作系统,

c) 处理操作系统的数据结果,返回到屏幕

d) 这种对话方式可以 交互的(键盘输入命令-->shell-->操作系统-->shell处理返回结果-->屏幕展示),

也可以是 非交互(脚本)方式

e) 单词是贝壳,见名知意,贝壳保护操作系统核心

 

shell所在位置图:

 



 

 

 

shell脚本概念:

 

a) 当命令或语句不在命令行执行,而是通过一个程序文件执行时,该程序就叫做shell脚本/shell程序

b) shell脚本/shell程序 你可以类比于 DOS系统下的批处理程序(*.bat)

c) shell脚本/shell程序 是 命令,变量,流程控制语句 有机的结合体

 

 

 shell在运维中的作用:

 

a)  linux几乎所有的配置文件,日志文件都是纯文本类型文件

b)  shall脚本擅长处理纯文本类型的数据

c)  shell可以处理的有:

    基础命令, apache服务,mysql服务,php服务,nginx服务,lvs+keepalive服务, cacti/mrtg流量及监控

    iptables防火墙, nagios监控服务, ssh key 服务, rsync服务, 定时服务 .....

 

shell脚本和其余脚本语言的侧重点:

 

shell语言是弱类型语言。

shell脚本优势在于处理操作系统底层的业务(eg: 一键安装, 报警脚本,常规业务应用)

约2000多个linux命令都在为shell脚本提供服务, shell操作起来更加简单快速。

 

php,python 优势在于开发运维工具, web界面的管理工具上。

 

 

常用操作系统的默认shell版本:

linux是 Bourne Again shell(bash)

Solaris和FreeBSD 是 Bourne shell(sh)

AIX 是 Korm Shell(ksh)

HP-UX 是 POSIX shell(sh)

 

那么我们常用的 centos linux 默认的shell 是 bash, 可用如下命令确认:

[root@sliver114 log]# echo $SHELL
/bin/bash

 

 

 

 shell脚本的建立:

 

 

 a) 脚本开头:第一行会指出是由哪个程序(解析器)来执行脚本的内容

  写法为:  #! /bin/bash  或  #! /bin/sh, 

其中, sh是bash的软链接,即使使用  #! /bin/sh 也会真正执行   #! /bin/bash

[root@sliver114 ~]# ll /bin/sh
lrwxrwxrwx 1 root root 4 Jul 17 04:23 /bin/sh -> bash

 建议使用标准写法  #! /bin/bash

 

  

  #!  是幻数,内核会根据它来确认哪个程序来执行脚本中的内容, 其后的 /bin/bash

上述写法也只能写在第一行,如果写在别的行中,失去意义也不会被执行。

 

eg:

[root@sliver114 ~]# cat test1.sh
#!/bin/bash

echo "hello start"
#!/bin/sh
#!/bin/sh
echo "world end"
[root@sliver114 ~]# sh test1.sh
hello start
world end


可见, test1.sh中 第4,5行的#!/bin/sh 均没有执行

 

如果脚本开头没有指定解释器, 那么在执行时需要显式指定解释器, eg:

bash test.sh

python test.py

 

 

shell 脚本的执行:

 

 bash 脚本名称.sh   或者  sh  脚本名称.sh

 

 

shell脚本开发规范:

 

a) 开头指定脚本解释器  #!/bin/bash

b) 开头加入版本版权信息 , 建议通过修改 ~/.vimrc 配置文件自动增加如下信息

    #Date:

    #Author:

    #Mail:

    #Function:

    #Version:

c) 脚本中不要有中文

d) 脚本以 .sh为扩展名

e) 代码书写习惯优秀

e.1) 成对内容一次写出 eg: "" {} [] ''

e.2) [] 中括号两端各要有一个空格

e.3) 流程控制语句一次书写完 eg:  if   for   while   until   case等

       if

        then

           内容

      fi

 

     for n in list

     do

       内容

     done

 

e.4) 通过缩进让代码易读

 

 

shell脚本变量简介:

 

a) 变量类型:

     全局变量: 在创建全局变量的shell 以及派生出来的子进程shell中使用。

     局部变量: 只能在创建局部变量的shell函数/脚本中使用

 

b) 环境变量:

b.1)  用于定义shell的运行环境,保证shell的正确执行,eg:shell通过环境变量来确定登陆用户名,

      命令路径,终端类型,登陆目录等

b.2) 所有环境变量都是系统全局变量,作用于所有子进程

 b.3) 环境变量可以在命令行中设置,但用户退出时设置的数值将消失

b.4)  建议将全局变量配置在 /etc/profile 或者 家目录下的.bash_profile, 防止用户退出时失效, 设置好的环境变量会在用户登录时被初始化。
 eg:
[root@sliver114 ~]# vi /etc/profile 
里面添加
ONE=1

退出后 
 
[root@sliver114 ~]# source /etc/profile  强制立即生效
[root@sliver114 ~]# echo $ONE  然后打印.得到配置的全局变量ONE的结果为1
1
 
 
查看所有已定义的全局环境变量:
[root@sliver114 ~]# printenv
HOSTNAME=sliver114
TERM=vt100
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.1.156 53768 22
SSH_TTY=/dev/pts/1
..........
 

 

c) 局部变量

c.1)  生命周期仅存在于用户当前的shell脚本,当启动另一进程或者退出将失效。

c.2) 定义方式为:  变量名=value,  建议 如果是数字类型不需要加引号,如果是其他类型加上""

     eg:   two=2        name="zm"   ""会把里面的内容如果能执行的话先执行在输出

    

[root@master shelldir]# name="zm"
[root@master shelldir]# echo "my name is $name"
my name is zm

 

c.3) 

 

 

 d) 变量调用

使用 ${定义的变量名}  或者 直接使用 $定义的变量名

 eg: [root@sliver114 ~]# echo ${TWO}   等同于

       [root@sliver114 ~]# echo $TWO

 

f) 把命令定义为变量:

 

如下以 局部变量为例:

[root@sliver114 ~]# cmd=`date +%F`
[root@sliver114 ~]# echo $cmd
2014-08-20
[root@sliver114 ~]# cmd=`date`
[root@sliver114 ~]# echo $cmd
Wed Aug 20 22:40:35 PDT 2014

``(两个反引号)是键盘tab键上面的那个字符

或者用:(推荐使用  注意定义时候 =左右不要有空格)
[root@sliver114 ~]# cmd=$(date +%F)

[root@sliver114 ~]# echo 
$cmd
2014-08-20

 

 

 

 

 

 

 

 

 

  • 大小: 70.9 KB
分享到:
评论

相关推荐

    LINUX开发基础 系统使用 全屏编辑器VI SHELL 常用变量

    第一节 Linux系统概述 一、Linux简介 二、Linux系统的特点 三、Linux系统的组成 第二节 Linux系统的使用 Linux文件系统的概念 Linux的标准目录和文件 文件保护的概念 ...七、参数变量和内部变量

    老男孩Linux shell 高级编程

    如shell编程需要的基础知识储备、shell脚本概念介绍及第一个脚本案例、shell脚本基础知识-作用地位-比其他语言优势、建立一个规范的shell脚本、执行shell脚本的多种方法及重要区别精讲、shell脚本开发的9点基本规范...

    【shell脚本】shell脚本之概念、运行方式、变量的使用、交互式脚本、运算(shell脚本基础学习一)

    【shell脚本】shell脚本之概念、运行方式、变量的使用、交互式脚本、运算(shell脚本基础学习一) shell概念 --- 编写执行--- 变量 --- 运算---  shell脚本 /bin/bash 默认解释器 cat /etc/shells 查看所有解释器 ...

    shell 基本语法

    从网上搜集的shell 基本语法 * 1 合理使用注释 * 2 变量赋值和引用 * 3 Shell里的命令 o 3.1 Unix 命令 o 3.2 概念: 管道, 重定向和 backtick * 4 Shell里的流程控制 o 4.1 if 语句 o 4.2 && 和|| ...

    跟老男孩学Linux运维:Shell编程实战

    62.2 什么是Shell脚本 / 72.3 Shell脚本在Linux运维工作中的地位 / 82.4 脚本语言的种类 / 92.5 常用操作系统默认的Shell / 112.6 Shell脚本的建立和执行 / 12第3章 Shell变量的核心基础知识与实践 ...

    shell编程基础(linux编程方向)

    • 2 变量赋值和引用 • 3 Shell里的命令 o 3.1 Unix 命令 o 3.2 概念: 管道, 重定向和 backtick • 4 Shell里的流程控制 o 4.1 if 语句 o 4.2 && 和|| 操作符 • 5 case 语句 o 5.1 select 语句 o 5.2 ...

    实战Linux Shell编程与服务器管理-作者:卧龙小三(1)

    Chapter 3 基础概念介绍 Chapter 4 Bash Shell程序的结构 Chapter 5 基本操作介绍 Chapter 6 变量与字符串操作 Chapter 7 高级变量 Chapter 8 算术运算 Chapter 9 流程控制 Chapter 10 函数 Chapter 11 转向...

    学习shell必备(CN).chm

    4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. Bash变量是不区分类型的 4.4. 特殊的变量类型 5. 引用 5.1. 引用变量 5.2. 转义 6. 退出和退出状态码 7. 条件判断 7.1. 条件测试结构 7.2. 文件测试操作符 ...

    实战Linux Shell编程与服务器管理-作者:卧龙小三(7)

    Chapter 3 基础概念介绍 Chapter 4 Bash Shell程序的结构 Chapter 5 基本操作介绍 Chapter 6 变量与字符串操作 Chapter 7 高级变量 Chapter 8 算术运算 Chapter 9 流程控制 Chapter 10 函数 Chapter 11 转向...

    Linux 基础课程课件

    2.3 文件概念和文件类型 2.4 文件操作命令 2.5 目录及其操作命令 2.6 联机帮助命令 2.7 有关进程管理的命令 第3章 文本编辑 3.1 vi的工作方式 3.2 进入和退出vi 3.3 文本输入 3.4 移动光标 3.5 文本修改 ...

    CentOS.5系统管理-part1

    4.9 Shell变量和Shell环境 4.9.1 用户自定义变量 4.9.2 Shell变量的作用域 4.9.3 环境变量 4.9.4 用户工作环境 第5章 Shell脚本编程 5.1 Shell脚本简介 5.1.1 什么是Shell脚本 5.1.2 Shell脚本中的成分 5.1.3 Shell...

    Shell从入门到熟练

    本资源主要讲解shell的基础知识,适合于后端开发人员及初级运维人员,笔记中主要包括概念、解析器、入门、变量、条件判断、运算符、流程控制、控制台输入、函数、常用工具几个模块,其中条件判断、流程控制、工具是...

    UNIX操作系统教程 张红光

    第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要...UNIX基本概念及入门技术10 2.1UNIX系统基本常识10 2.1.1两种前端机10 />...

    redhat linux教材20课程学习文档

    5.1 变量和运算符 5.1.1 变量替换 5.1.2 位置变量 5.1.3 进程变量 5.1.4 bash 引号规则 5.1.5 运算符 5.1.6 表达式替换 5.1.7 标准shell变量 5.1.8 影响命令的变量 5.2 过程 5.2.1 在过程内部使用变量 5.2.2 shift ...

    非常好的大数据入门目资源,分享出来.zip

    Hive CLI 和 Beeline 命令行的基本使用 Hive 常用 DDL 操作 Hive 分区表和分桶表 Hive 视图和索引 Hive 常用 DML 操作 Hive 数据查询详解 三、Spark Spark Core : Spark 简介 Spark 开发环境搭建 弹性式数据集 RDD ...

    SOLARIS高级系统管理员指南

    16.1 基本概念 205 16.1.1 介绍Bourne、Korn和C shell 205 16.1.2 了解shell如何执行命令 206 16.1.3 命名shell脚本 207 16.1.4 标识shell 207 16.1.5 使脚本可执行 207 16.1.6 存储shell脚本 208 16.1.7 编写shell...

    突破程序员基本功的16课.part2

    2.1.1 实例变量和类变量的属性 2.1.2 实例变量的初始化时机 2.1.3 类变量的初始化时机 2.2 父类构造器 2.2.1 隐式调用和显式调用 2.2.2 访问子类对象的实例变量 2.2.3 调用被子类重写的方法 2.3 父子实例的...

Global site tag (gtag.js) - Google Analytics