Shell

  • 1.什么是shell?
    • 即可以理解为1.普通的文件
                             2.linux命令组成
                             3.编程语言
  • 2.语法
    • 文件命名 结尾 一般都是以 .sh 结尾
      文件内容 第一行 #!/bin/bash
    • 1.编写脚本  :   helloworld   
      •  [root@bigdata99 shell]# cat wc.sh
            #!/bin/bash
            echo "www.bigdata.com"
    • 2.运行shell脚本
      • 语法  ;  1.sh xxx.sh
        • [root@bigdata99 shell]# sh ./wc.sh
                      www.bigdata.com
      • 2.给脚本赋予 执行权限
        • chmod 744 ./wc.sh
          [root@bigdata99 shell]# ./wc.sh
           www.bigdata.com
           [root@bigdata99 shell]# /root/shell/wc.sh
           www.bigdata.com
  • 2.定义变量 与 引用
    • 1.变量的命名规范:
      • 1.命名只能使用英文字母、数字、和下划线、不能以数字开头
        2.中间不能有空格、可以使用下划线
        3.不能使用linux里面的关键字
    • 2.定义变量
      • key=value
      • 1.静态:k=v  k="v" k='v'
        2.动态   k=`v`
      • 注意: =前后不能有空格
      • 引用:$k  或者   ${k}
  • 3.传递参数
    • 脚本内获取脚本外的参数  脚本内定一个参数: 格式 $n
      • 1.n表示数字
        2.n=1 作为脚本的第一个参数 n=2作为脚本的第2个参数...
        3.n=0 获取脚本的名字
      • eg: [root@bigdata99 shell]# ./parameter.sh "hello" "zs"
            hello
            zs
            [root@bigdata99 shell]# cat parameter.sh
            echo "文件名:$0"
            echo "第一个参数:$1"
            echo "第二个参数:$2"
            echo "参数的个数:$#"
            echo "传递的参数作为一个字符串:$*"
            echo "此脚本运行时的pid:$$"
  • 4.数组
    • 语法格式:1.元素 是 空格 进行分割
                        2.arr=(value1 value2 value3 ...)
      • eg:  [root@bigdata99 shell]# cat arr.sh
            arr=(zs lisi ww zl wrm)
            echo "所有数组元素:${arr[*]}"
            echo "第2个元素:${arr[1]}"
            echo "数组元素个数:${#arr[*]}"
  • 5.流程控制
    • 1.if else 语法
              语法结构:
              if condition;then
                  command
              else
                  command
              fi
    • 2.condition 条件判断
              [ 表达式 ]
              1.值判断   :   true ,false
                  = 等于
                  ==等于
                  <= >= > < !=
                  -eq 等于
                  -ne 不等于
                  -lt 小于
                  -gt 大于
                  -le 小于等于
                  -ge 大于等于
      • 补充:1.[] 前后要有空格     2.关系表达式 前后要有空格
      • linux 获取上一个命令是否执行成功:$?
                    成功 0  true
                    不成功 非0 false
        • eg:  [root@bigdata99 shell]# cat if.sh
           a="zs"
           b="zs"
           if [ ${a} == ${b} ];then
               echo "=="
           else
               echo "!="
           fi
      • 3.if elseif 语法
            语法结构:
                if condition;then
                    command
                elif condition;then
                    command
                else
                    command
                fi
      • 补充: && ||
      • [root@bigdata99 shell]# cat ifelse.sh
      • eg :    

        #统计期末成绩 优良差
        # >=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
              语法结构
                  for x in item1 item2 item3 ... itemN
                  do
                      command1
                      ...
                  done

        • 2.fori
                  打印 10以内的数字
                  [root@bigdata99 shell]# cat fori.sh
                  for((i=0;i<10;i++))
                  do
                      echo "value is ${i}"
                  done

        • 3.while
                  语法结构:
                      while condition
                      do
                          todo....
                      done
                  案例:
                      打印 10以内的数字
                  [root@bigdata99 shell]# cat while.sh
              # 打印 10以内的数字
              i=1
              while ((i<=10))
              do
                  echo ${i}
                  let i++
              done

  • 6.shell里面常用的分析工具

    • 1.awk 文本分析

      •  1.获取列数据
                    [root@bigdata99 ~]# cat test.log
                    a b c
                    1 2 3
                    [root@bigdata99 ~]# cat test.log | awk '{print $1}'
                    a
                    1
                    [root@bigdata99 ~]# cat test.log | awk '{print $2}'
                    b
                    2
                    [root@bigdata99 ~]# cat test.log | awk '{print $1,$2}'
                    a b
                    1 2

      • 2.获取行数据
                    [root@bigdata99 ~]# cat test.log | awk 'NR==1{print}'

    • 2.sed     文本替换

      • 1.文本中a 替换成d 每行第一次遇到a 替换成d  【不常用】
                    sed -i  's/a/d/'    test.log

      • 2.全文替换
                    sed -i 's/a/d/g' test.log

  • 7.机器克隆

    • 1.准备模板机

      • 1.网络配置  => 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

      • 2.机器自带没用的东西 去除掉

        • 1.jdk卸载掉:

          • 语法:   rpm -qa | grep java

            • eg:  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

      • 3.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.重启机器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值