发表于: 2019-12-22 21:30:00

1 1065


shell脚本

Shell变量

  变量:是shell传递数据的一种方式,用来代表每个取值的符号名。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。

变量设置规则:

  1,变量名称可以由字母,数字和下划线组成,但是不能以数字开头,环境变量名建议大写,便于区分。

  2,在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。

  3,变量用等号连接值,等号左右两侧不能有空格。

  4,变量的值如果有空格,需要使用单引号或者双引号包括。

变量分类

  Linux Shell中的变量分为用户自定义变量,环境变量,位置参数变量和预定义变量。可以通过set命令查看系统中存在的所有变量。

  系统变量:保存和系统操作环境相关的数据。HOMEPWD、SHELLUSER等等

  位置参数变量:主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用固定。

  预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

用户自定义变量

  用户自定义的变量由字母或下划线开头,由字母,数字或下划线序列组成,并且大小写字母意义不同,变量名长度没有限制。

设置变量

  习惯上用大写字母来命名变量。变量名以字母表示的字符开头,不能用数字。

变量调用

  在使用变量时,要在变量名前加上前缀“$”.

  使用echo 命令查看变量值。eg:echo $A

变量赋值

  1,定义时赋值:

    变量=值      等号两侧不能有空格

    eg:

      STR="hello world"

      A=9 

  2, 将一个命令的执行结果赋给变量

    A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A

    A=$(ls -la) 等价于反引号

      eg:  aa=$((4+5))

        bb=`expr 4 + 5 `

  3,将一个变量赋给另一个变量

    eg : A=$STR

变量叠加

  eg:#aa=123

  eg:#cc="$aa"456

  eg:#dd=${aa}789

 

  单引号和双引号的区别:

  现象:单引号里的内容会全部输出,而双引号里的内容会有变化

  原因:单引号会将所有特殊字符脱意

  NUM=10    

  SUM="NUMhehe"echoSUM     输出10 hehe

  SUM2='NUMheheechoSUM2    输出$NUM hehe

列出所有的变量

  set

删除变量

  unset  NAME

    eg :

      # unset A 撤销变量 A

      # readonly B=2 声明静态的变量 B=2 ,不能 unset

 

  用户自定义的变量,作用域为当前的shell环境。

 

环境变量

 

  用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和其所有子shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。

 

  export 变量名=变量值   申明变量

  作用域:当前shell以及所有的子shell。

 

位置参数变量

$n

n为数字,01-$9代表第一到第9个参数,

十以上的参数需要用大括号包含,如${10}。

$*

代表命令行中所有的参数,把所有的参数看成一个整体。以"12 … $n"的形式输出所有参数

$@

代表命令行中的所有参数,把每个参数区分对待。以"1""2" … "$n" 的形式输出所有参数

$#

代表命令行中所有参数的个数。添加到shell的参数个数

  shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$# 的值减1,用于分别处理每个参数,移出去的参数不再可用

  $* 和 $@的区别

  1,@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以"1""2" … "$n" 的形式输出所有参数;

  2,当它们被双引号" "包含时,"""2n"的形式输出所有参数;

  3,"@""1" "2""n" 的形式输出所有参数。

  

 预定义变量

$? 

执行上一个命令的返回值   执行成功,返回0,执行失败,返回非0(具体数字由命令决定)

$$

当前进程的进程号(PID),即当前脚本执行时生成的进程号

$!

后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程   &

 

read命令

  read [选项] 值

  read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) –s(隐藏输入)  

    eg:

      read –t 30 –p “please input your name: ” NAME

      echo $NAME

      read –s –p “please input your age : ” AGE

      echo $AGE

      read –n 1 –p “please input your sex  [M/F]: ” GENDER

      echo $GENDER

什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次

应用层、传输层、网络层、数据链路层 

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

三次握手是在安全可靠的基础上,握手次数最少的方案。两次握手并不能保证可靠性。四次握手又浪费了效率,当然,有的需要更高安全性的地方,是可以有N次握手协议的,但那是特殊情况。

今日问题暂无

明日计划task2总结



返回列表 返回列表
评论

    分享到