一、shell编程-变量

 1. 前言

  什么是shell

    shell是应用程序,是壳,是命令解释器。 

  shell语言的特点

    shell语言是指nuix操作系统的命令语言,同时又是该命令语言的监视程序的简称。

    shell本身是一个用c语言编写的程序,它是用户使用unix/linux的桥梁,用户的大部分工作都是通过shell完成的。

    shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令。

    作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具备的控制结构,包括循环和分支。

    它虽然不是nuix/Linux系统内核的已不复,但它调用了系统核心的大部分功能来执行程序。

    建立文件并以并行的方式协调各个程序的运行。

    因此对用户来说,shell是最重要的实用程序。

    深入了解和熟练掌握shell的特性极其使用方法,是用好nuix/Linux系统的关键。

  执行shell的多种方式

    bash file1  子shell

    sh file1  就是bash的简写  子shell

    . file1  等于双击程序  本shell

    source file1  本shell

    子shell就是在shell中运行shell,套娃。

 

    准备环境

    vim bash.sh

#!/bin/bash

cd /home/

ls

    bash bash.sh

    . bash.sh

    

 

   shell解释器在哪

    cat /etc/shells

    

 

    chsh -l

    

 

 

2.简介

    shell变量,用一个固定的字符串去表示不固定的内容,便于修改。

 

 

3.自定义变量

  用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户自定义的。

  定义变量

    变量名=变量值

    name="zhangsan"

  变量调用

    当我们需要提取变量中的内容时,需要在变量名之前加入"$"符号,最简单的变量调用就是用过echo命令输出变量的值

    echo $name

    

  自定义变量要求

    变量名不能以数字开头  1name=123  错

    等号左右两侧不能有空格  name = 123  错

    变量的值如果有空格,必须用引号包含  name=1 234  错

  重复定义变量

——————————————————

    name=zhangsan

    name=lisi

    echo $name

    

 

——————————————————

    

 

 ——————————————————

    在进行变量叠加时,变量名需要用双引号或${}包含。

    

  变量查看set

    xingming=zhangsan666

    set | grep xingming

    

 

  变量删除unset

    unset 变量名

    unset xingming

    

 

  使用变量前

  编写脚本

  vim ping.sh

#!/bin/bash

ping -c  1  192.168.56.1  &>  /dev/null  && echo 192.168.56.1up  || echo 192.168.56.1down

    :wq

  &&是如果成功执行后面命令,||是如果失败执行后面命令

  chmod +x ping.sh

  ./ping.ch

   

 

 

  使用变量后

  

 

 

  交互式定义变量

  read从键盘读入变量值

  read 变量名

  read -p 变量名  先打印一句话,再等用户输入

  结合上面的ping.sh

  

 

   

 

  三种引号

    定义或引用变量时要注意的

    " "  弱引号  让空格失去了分割的作用变为普通空格

    

    

    ' '  强引号  让一切符号失去作用

    

    ` `  里面的命令优先执行

    

 

    

 命名规则

    命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

    中间不能有空格,可以使用下划线_

    不能使用标点符号

    不能使用bash里的关键字(可用help命令查看保留关键字)

 

4.整数运算

    方法一

      语法

      expr 1 + 2

      expr $num1 + $num2

      

 

      

 

      

      需求

      运动员的成绩总分

      

      案例

      制作脚本

      vim avg3.sh

#!/bin/bash

read -p "请输入您的第一门成绩:" num1

read -p "请输入您的第二门成绩:" num1

echo -n "总成绩是:"

expr $num1 + $num2

 :wq

      chmod +x avg3.sh

      . avg3.sh

      

 

     

    方法二

      语法

      $(())

      

      案例

      

 

     

    方法三

      语法

      $[]

      

      案例      

      

 

 

    方法四

      语法

      let

      

      案例

      

 

 

 

5.小数运算(了解)

  bc运算器

  bc:交互运算器

  scale=2  保留小数点后面两位

  

 

   

 

6.环境变量(了解)

  全局变量和局部变量

  

 

 

  声明全局变量

  export 变量名  不加$

  

 

  变量范围:在当前shell和子shell有效

 

     想要使变量在当前用户登录后一直生效,可以将变量放到~/.bash_profile

    vim ~/.bash_profile

export qqwee=123456

:wq

    

 

 

    证明

      注销登录,重新登陆服务器

      

 

 

    想使变量在所有用户登录后一直生效,可以将变量放在/etc/profile

 

 

 7.位置变量(了解)

  位置变量语法

    命令  参数1  参数2参数3...参数9以后特殊定义

    $0  $1  $2  $3...$9

 

   案例

    

 

    

 

 

    

    

 

 

  预定义变量

    $0  脚本名/程序名

    $*  所有的参数

    $#  参数的个数

 

    

 

    

 

 

 

    

 

 

 

例题

  编写自动创建用户并设置初始密码的脚本

    

 

     --stdin是标准输入,既读取输入命令,再执行。

    这里写成echo "$pass" | passwd $user --stdin &> /dev/null 会好理解一点

    

 

posted @ 2022-02-03 13:05  真渡  阅读(56)  评论(0)    收藏  举报