【## ***shellday01***】

shellday01

1.什么是shell?
1.普通的文件
2.Linux命令组成
3.编辑语言
2.语法
2.1 入门
1.文件命名 结尾 一般都是以 .sh 结尾
2.文件内容 第一行 #!/bin/bash

            1.编写脚本 
                            wordcount  词频统计
                            helloworld 
            

            [root@bigdata02 shell]# cat wc.sh
            #!/bin/bash
            echo "www.bigdata.com"


            2.运行shell脚本
                            1.sh xxx.sh 
                                    [root@bigdata02 shell]# sh ./wc.sh
                                    www.bigdata.com
                            2.给脚本赋予 执行权限
                                        chmod 744 ./wc.sh
                                        [root@bigdata02 shell]# ./wc.sh
                                        www.bigdata.com
                                        [root@bigdata02 shell]#  /root/shell/wc.sh
                                        www.bigdata.com

            3.补充:
                        debug 
                                        1.[root@bigdata02 shell]# cat wc.sh
                                                        #!/bin/bash  -x
                                                        echo "www.bigdata.com"
                                        2.[root@bigdata02 shell]# sh -x wc.sh
                                            + echo www.bigdata.com
                                            www.bigdata.com

2.定义变量 与 引用
1.变量的命名规范:
1.命名只能使用英文字母、数字、和下划线、不能以数字开头
2.中间不能有空格、可以使用下划线
3.不能使用Linux里面的关键字
2.定义变量
key = value
注意:
1.=前后不能有空格
1.静态:
k = v k = “v” k = ‘v’
2.动态
k = v
引用:
$k
${k}

                            场景 :
                                    zs    
                                                zszhenshuai

3.传递参数
版本内获取脚本外的参数 脚本内定一个参数 : 格式 $n
1.n表示数字
2. n = 1 作为脚本的第一个参数 n=2 作为脚本的第2个参数…
3.n = 0 获取脚本的名字

            [root@bigdata02 shell]# ./parameter.sh "hello" "zs"
            hello
            zs
            [root@bigdata02 shell]# cat parameter.sh
            echo "文件名:$0"
            echo "第一个参数:$1"
            echo "第二个参数:$2"
            echo "参数的个数:$#"
            echo "传递的参数作为一个字符串:$*"
            echo "此脚本运行时的pid:$$"

            补充:
                    
                            ps - ef | grep xxx  => pid
                            kill   -9  pid

4.数组
语法格式:
1.元素 是 空格 进行分割
2. arr =(value1 value2 value3 …)
[root@bigdata02 shell]#cat arr.sh
arr = (zs lisi ww zl wrm)
echo “所有数组元素: a r r [ ∗ ] " e c h o " 第 2 个 元 素 : {arr[*]}" echo "第2个元素: arr[]"echo"2{arr[1]}”
echo “数组元素个数:${#arrr[*]}”
5.流程控制
分支、循环
1.if else 语法
语法结构:
if condition ;then
command
else
comman
fi
2.condition 条件判断
[ 表达式 ]
1.值判断
true false

                                =等于
                                ==等于
                                <=  >=  > <  !=
                                -eq  等于
                                -ne 不等于
                                -lt 小于
                                -gt 大于
                                -le 小于等于
                                -ge 大于等于
    补充:
            1. []前后要有空格
            2.关系表达式 前后要有空格
            Linux 获取上一个命令是否执行成功:
                        $? 
                                成功 0 true
                                不成功  非0  false
            2.权限判断
            3.文件类型判断

[root@bigdata02 shell]# cat if.sh
a = “zs”
b= “zs”
if [ ${a} == ${b} ];then
echo “==”
else
echo “!=”
fi

课外作业:
1.远程连接工具 xshell
远程编辑连接共具
1.vscode
2.if elseif 语法
语法结构:
if condition;then
elif condition;g;then
command
else
command
fi
&& || 同样适用

[root@bigdata02 shell# cat ifelse.sh
#统计期末成绩 优良差

>= 90 优 >= 60 良 <60 差

score=$1
if [ ${score} -ge 90 ];then
echo “优”
elif [ ${score} -ge 60 ];then
echo"良"
else
echo “差”
fi
循环
for.while
1. for:
语法结构
for x in item1 item2 item3 … itemN
do
command1
done
[root@bigdata11 shell] # cat for.sh

            for x in 1 2 3 4
            do 
                
                echo ${x}
            done
        2. fori 
                打印 10 以内的数字
                [root@bigdata11 shell]# cat fori.sh
                #fori
                #打印10以内的数字
                for((i=0;i<10;i++))
                do 
                    
                    echo "value is $ {i}"
                done
        3.while
                    语法结构:
                                while condition 
                                do   
                                            todo...
                                done
                    案例: 打印10以内的数字
                        #while 
                        #打印10以内的数字
                        while  ((i<=10))
                         do 
                                
                                echo ${i}
                                let i++
                            done
                    [root@bigdata12 shell]# cat while.sh

场景:
有一个字符串"zhangsan,lisi,wangwu,zhaoliu"
如何分割字符串?
java 中 split (“,”) =》 arry =》 for
linux 把 , =》 空格 =》 arry

                1.字符串的替换:
                            str//,/空格
                                    =>zhangsan,lisi,zhaoliu
                                    =>zhangsan lisi zhaoliu
                    #如何分割字符串?
                    str="zhangsan,lisi,wangwu,zhaoliu"
                    arr=(${str//,/ })
                    for var in ${arr[*]}
                    do 
                        echo $var 
                    done
                    [root@bigdata12 shell]# cat split.sh
               
                     2.IFS变量进行字符串分割【了解】

6.shell 里面常用的分析工具
1.awk 文本分析
1.获取列数据
[root@bigdata12 shell]# cat test.log
a b c
1 2 3
4 5 6
[root@bigdata12 shell] # cat tset.log | awk ‘{print $1}’
a
1
4
[root@bigdata12 shell] # cat tset.log | awk ‘{print $2}’
b
2
5
[root@bigdata12 shell] # cat test.log | awk ‘{print $1,$2}’
a b
1 2
4 5
[root@bigdata12 shell] # cat test.log | awk ‘NR1{print}’
a b c
[root@bigdata12 shell] #cat test.log | awk 'NR
2{print}’
1 2 3
[root@bigdata12 shell]# cat test.log | awk ‘NR1,NR2{print}’
a b c

                    1 2 3
                    
                        

        2.sed 
                文本替换
                    1.文本中 a 替换成 d 每一行遇到a 替换成d 【不常用】
                        sed -i ‘s/a/d/'    test.log
                    2.全文替换
                        sed -i    ‘s/a/d/g'   test .log
                    补充:
                            [root@bigdata12 ~]# cat path.log
                            p1=/data/log
                            p2=/data/spark
                需求:
                
                    p2  值路径  替换成  /root
                    
                    sed -i  ‘s//data/spark//root/g'   path.log   错误的 
                    转义: \
                    sed -i  's/\/data\/spark/\/root/g'   path.log
                    
                    [root@bigdata99 ~]# cat path.log
                    p1=/data/log
                    p2=/root

                    sed -i 's#/root#/data/spark#g' path.log

1.机器克隆

1.准备模板机
    2.网络配置  => ip 静态ip
    网卡:
        vim /etc/sysconfig/network-scripts/ifcfg-ens33
            BOOTPROTO="static"
            ONBOOT="yes"
            IPADDR=192.168.41.11
            GATEWAY=192.168.41.2
            DNS1=192.168.41.2

    3.机器自带没用的东西 去除掉
        1.jdk卸载掉:
            rpm -qa | grep java
                xxx
                xx
                x
            卸载:
            rpm -e xxx --nodeps
            rpm -e xx --nodeps
            rpm -e x --nodeps
        2.hostname
            vim /etc/hostname
            bigdata11
        3.内网ip 与hostname 映射
            vim /etc/hosts

            192.168.41.11 bigdata11
            192.168.41.12 bigdata12
            192.168.41.13 bigdata13
            192.168.41.14 bigdata14
            192.168.41.15 bigdata15
            192.168.41.16 bigdata16

        4.防火墙关闭:打开所有端口
            systemctl status firewalld
            systemctl stop firewalld
            systemctl disable firewalld
2.vmware 虚拟网络
    1.关闭虚拟机
    2.虚拟网络:
        编辑=》虚拟网络=》vm8=》
            子网ip:192.168.41.0
            子网掩码:255.255.255.0
            nat设置:192.168.41.2
    3.开机:
        验证内网ip : ifconfig
            192.168.41.11 bigdata11

    4.远程登录
        xshell :
            ip
            用户名
            密码
            port


2.克隆机器
    注意:
        创建完整克隆
    1.修改克隆机器的内网ip
        vim /etc/sysconfig/network-scripts/ifcfg-ens33
    2.hostname
        vim /etc/hostname
    3.重启机器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值