ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

7-shell编程

2022-05-02 16:03:01  阅读:143  来源: 互联网

标签:bin shell 代码 编程 echo PATH bash


一.shell脚本介绍

shell是什么?

 一门编程语言,用来解释执行这门编程语言语法的解释器

计算机体系结构:命令—>shell解释器—>系统调用的接口—>内核—>计算机硬件

什么是编程语言:人——————>编程语言——————>计算机

什么是编程:人——————>编程语言——————>计算机(先干什么—>再干什么—>然后干什么)

什么是程序:我们把计算机做事的步骤用编程语言翻译下来,然后存放到文件中,该文件就是程序

 

运行shell脚本

 权限:当前用户需要对脚本文件有r和x权限

一个shell脚本运行的三个步骤:bash a.sh

 1.先启动bash解释器

 2.bash解释器会把a.sh的内容从硬盘读入内存

 3.bash解释器会识别刚刚读入内存内容,解释执行shell代码

 

运行shell脚本的两种方式

 方式1:

  bash 脚本的文件路径

 方式2:
  脚本的文件绝对路径

  ./脚本的文件相对路径

 

二.shell语法

 1.变量

  什么是变量?
    变:事物的状态是可以变化的

    量:记录下事物的状态

  为何要有变量?

  如何用变量?

  使用原则:先定义后使用  

    定义变量:

      height=190

      age=18

      name=egon

    访问变量:

      echo $height  

      echo ${height}

    修改:

      height=200

 

  变量的三大组成部分:

    变量名:相当于门牌号,是用来访问到变量值的

    赋值符号:把变量值的地址绑定给变量名

    变量值:记录的事物状态,即存放到内存中的数据

 

  变量名的命名:

    前提:在见名知意的前提下,尽可能地精简

    规则:
     1.由字母数字下划线组成:height_of_egon=190

     2.不能以数字开头

     3.不能使用关键字

     4.不要使用中文

 

  变量值:
    整型:年龄,等级,号码

    age=19

    浮点型:薪资,身高,体重

    salary=3.3

    字符串:描述性质的状态,名字,性别,爱好,国籍

    msg="hello world"

    msg='hello world'  # 硬引用

    ··反引号  # 取结果集,touch ·date +%F·.txt  或者 touch $(date +%F).txt

 

  2.变量的作用域

   变量的作用域就是变量的生效范围

   全局作用域:在当前shell进程里有效(首先vim b.sh;source b.sh表示b.sh在当前进程运行;bash b.sh表示开启一个新的子进程运行)

   环境变量:PATH 在所有的进程有效  

    1).echo "export PATH=$PATH:/root" >> /etc/profile  ——>创建新的命令,将命令的绝对路径追加加到PATH变量后

    2).PATH=$PATH:/root——>登录用户首先运行bash程序,生效

        export PATH——>遗传给其它任何子shell 

    source /etc/profile——>手动生效

 

  3.流程控制

   1)if判断

    if 条件1;then

      代码1

      代码2

      代码3

    elif 条件2;then

      代码1

      代码2

      代码3

    ......

    else 条件1;then

      代码1

      代码2

      代码3

    fi

 

  单分支:

    if 条件1;then

      代码1

      代码2

      代码3

    fi

  双分支:

    if 条件1;then

      代码1

      代码2

      代码3

    else

      代码1

      代码2

      代码3

    fi

#!bin/bash
echo "111"
echo "222"
if [ 10 -gt 30 ];then
  echo "ok"
else
  echo "no"
fi
echo "333"

 

  多分支:   

#!/bin/bash

read -p "请输入你的成绩:" score
if [ $score -ge 90 ];then
  echo "优秀"
elif [ $score -ge 80 ] && [ $score -lt 90 ];then
  echo "良好"
elif [ $sore -ge 70 ] && [ $score -lt 60 ];then
  echo "一般"
else
  echo "很差"
fi

 

 

   

  2)循环

 1.

#!/bin/bash
ping -c www.baidu.com &>/dev/null
if [ $? -eq 0 ];then
  echo "network ok"
else
  echo "network error"
fi

2.

#!/bin/bash
for i in 0 1 2 3 4
do
  echo $i
done

3.

#!/bin/bash
for x in {0..8}
do
  if [ $x -eq 6 ];then
    break
  fi
  echo $x
done

 4.

#!/bin/bash
for i in {2..254}
do
  (ping -c 1 192.168.182.$i &>/dev/null
  if [ $? -eq 0 ];then
    echo "192.168.182.$i is up"
  else
    echo "192.168.182.$i is down"
  fi) &  # ()括号括起来,&表示并发执行,速度快
done

 5.

#!/bin/bash
for i in {2..254}
do
  ping -c 1 192.168.182.$i &>/dev/null && echo "192.168.182.$i up" >>/tmp/ip1.log || echo "192.168.182.$i down" >>/tmp/ip1.log &
done

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

标签:bin,shell,代码,编程,echo,PATH,bash
来源: https://www.cnblogs.com/wxd131488/p/16212482.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有