大数据之Shell基础

目录

1.shell概述

2.shell脚本入门

2.1 shell 解析器

2.2 脚本格式

3.shell中的变量

3.1 系统变量

3.2 自定义变量

4.运算符

4.1基本语法

4.2 案例实操:

5.条件判断

5.1 基本语法

5.2 常用判断条件

6.流程控制

6.1 if判断

6.1.1 基本语法

 6.1.2 案例实操

6.2 case语句

6.2.1 基本语法

6.2.2 案例实操

6.3 for循环

6.3.1 基本语法

6.3.2 案例实操

6.4 while循环


1.shell概述

shell是一种解释型语言,是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。用于操作系统内核和应用程序的交互,具有易编写、易调试、灵活性强的优点。

2.shell脚本入门

2.1 shell 解析器

Linux中提供一下shell解析器,其中常用的是sh以及bash解析器。Cenos默认的解析器是bash

[yangmin@hadoop102 shelltest]$  cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

2.2 脚本格式

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

3.shell中的变量

3.1 系统变量

常用系统变量:$HOME $PWD $SHELL $USER $JAVAHOME等

3.2 自定义变量

基本语法

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

(2)撤销变量:unset 变量

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

定义变量规则

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

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

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

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

4.运算符

4.1基本语法

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

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

注意:expr运算符间要有空格

4.2 案例实操:

(1)计算3+2的值

[atguigu@hadoop101 datas]$ expr 2 + 3

5

(2)计算3-2的值

[atguigu@hadoop101 datas]$ expr 3 - 2

1

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

采用一步完成expr

[atguigu@hadoop101 datas]$ expr `expr 2 + 3` \* 4

20

采用[]形式

[atguigu@hadoop101 datas]# S=$[(2+3)*4]

[atguigu@hadoop101 datas]# echo $S

5.条件判断

5.1 基本语法

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

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

5.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)

6.流程控制

6.1 if判断

6.1.1 基本语法

 6.1.2 案例实操

输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。

#!/bin/bash


if [ $1 -eq "1" ]
then
        echo "bangzhang zhen shuai"
elif [ $1 -eq "2" ]
then
        echo "xiaopang zhen shuai"
fi

6.2 case语句

6.2.1 基本语法

注意事项:

  1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  2. 双分号“;;”表示命令序列结束,相当于java中的break。
  3. 最后的“*)”表示默认模式,相当于java中的default。

6.2.2 案例实操

输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。

#!/bin/bash


case $1 in
"1")
        echo "xiaomin"
;;

"2")
        echo "xiaopang"
;;

*)
        echo "xiaomeimei"
;;
esac

6.3 for循环

6.3.1 基本语法

 

6.3.2 案例实操

从1加到100

#!/bin/bash

s=0
for ((i=0;i<=100;i++))
do
        s=$[$i+$s]
done
echo $s
~                                                                                                                                                                                     
~                                                                                                                                                                                  

6.4 while循环

6.4.1 基本语法

6.4.2 案例实操

从1加到100


#!/bin/bash

s=0
i=0
while [ $i -le 100 ]
do
   s=$[$i+$s]
   i=$[$i+1]
done
echo $s

j=0
while [ $j -le 10 ]
do
        echo "I love xiaopang"
        j=$[$j+1]
done

猜你喜欢

转载自blog.csdn.net/baidu_41833099/article/details/122351257
今日推荐