shell进一步学习

一.关于解释器

(1)Linux提供的Shell解析器有:

[root@iZwz9fdluqx20m1qe0ml4qZ shell_learning]# cat /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

(2)bash和sh的关系

[root@iZwz9fdluqx20m1qe0ml4qZ bin]# ll|grep bash

-rwxr-xr-x. 1 root root 964544 Apr 11 2018 bash
lrwxrwxrwx. 1 root root 10 Nov 29 2018 bashbug -> bashbug-64
-rwxr-xr-x. 1 root root 6964 Apr 11 2018 bashbug-64
lrwxrwxrwx. 1 root root 4 Nov 29 2018 sh -> bash

(3)Centos默认的解析器是bash

[root@iZwz9fdluqx20m1qe0ml4qZ bin]# echo $SHELL

/bin/bash

二.Shell脚本入门

  1.脚本格式

    脚本以#!/bin/bash开头(指定解析器)

 

  2.运行方式

1.修改文件权限  
    chmod 777 filename
    ./filename   运行

2.bash filename
    sh filename

 

  注意:第二种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第一种执行方法,本质是脚本需要自己执行,所以需要执行权限。

 

三.shell中的变量

 1.系统变量  

  1. 常用系统变量

    $HOME、$PWD、$SHELL、$USER等

  2.案例实操

  (1)查看系统变量的值

    [root@iZwz9fdluqx20m1qe0ml4qZ bin]# echo $HOME

    /root

  (2)显示当前Shell中所有变量:set

    [root@iZwz9fdluqx20m1qe0ml4qZ bin]# set

    BASH=/usr/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_LINENO=()

 2.用户自定义变量

  1.基本语法

    (1)定义变量:变量=值

    (2)撤销变量:unset 变量

    (3)声明静态变量:readonly变量,注意:不能unset

  2.变量定义规则

          (1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

          (2)等号两侧不能有空格

          (3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

          (4)变量的值如果有空格,需要使用双引号或单引号括起来

     (5)可把变量提升为全局环境变量,可供其他Shell程序使用(解析器全局变量)

      export 变量名

  3.特殊变量 $n

  1.基本语法

 $n    (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

  shell进一步学习

 

 

 

  4. 特殊变量:$#

   1.基本语法

          $#    (功能描述:获取所有输入参数个数,常用于循环)

   shell进一步学习

 

 

 5.特殊变量:$?

   

  1.基本语法

    $?  (功能描述:最后一次执行的命令的返回状态如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

  shell进一步学习

 

  6.特殊变量:$*、$@

  1.基本语法

          $*    (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

          $@  (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

  shell进一步学习

  

四.运算符

  

  1.基本语法

  (1)“$((运算式))”或“$[运算式]”

  (2)expr  + , - , \*,  /,  %    加,减,乘,除,取余

    注意:expr运算符间要有空格,之前的变量命令赋值号左右两边不能有空格

  2.案例实操:

  (1)计算3+2的值

    shell进一步学习

 

  (3)计算(2+3)X4的值

    (a)expr一步完成计算

        shell进一步学习

 

 

    (b)采用$[运算式]方式

      shell进一步学习

 

 五.条件判断

  

  1.基本语法

    [ condition ](注意condition前后要有空格)

    注意:条件非空即为true,[ atguigu ]返回true,[] 返回false。

  2. 常用判断条件

  (1)两个整数之间比较

    = 字符串比较

    -lt 小于(less than)                     -le 小于等于(less equal)

    -eq 等于(equal)                         -gt 大于(greater than)

    -ge 大于等于(greater equal)    -ne 不等于(Not equal)

  (2)按照文件权限进行判断

    -r 有读的权限(read)                 -w 有写的权限(write)

    -x 有执行的权限(execute)

  (3)按照文件类型进行判断

    -f 文件存在并且是一个常规的文件(file)

    -e 文件存在(existence)             -d 文件存在并是一个目录(directory)

   shell进一步学习

   

  3.多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)

shell进一步学习

上一篇:启动spark-shell显示不匹配错误


下一篇:linux-mount-iso