shell的变量学习

1、变量定义

  定义变量如:

1 your_name="jack"

  注意,变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:
    命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

2、变量运用

  使用一个定义过的变量,只要在变量名前面加美元符号即可。如:

1 your_name="jack"
2 echo $your_name
3 也可以echo ${your_name}

3、只读变量

  使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

  语法:readonly variable_name

4、删除变量

  使用 unset 命令可以删除变量。

  语法:unset variable_name

5、变量类型

  字符串是shell编程中最常用最有用的数据类型:数字,字符串,数组。字符串可以用单引号,也可以用双引号。

  1.字符串:

    (1)单引号字符串的限制:

      单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
      单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

    (2)双引号的优点:

      双引号里可以有变量
      双引号里可以出现转义字符

    (3)获取字符串的长度:

1 echo ${#your_name}

    (4)访问字符串里的字符:

1 echo ${your_name:1:2}

    (5)查找字符串里的字符:

1 ·expr index ${your_name}  a·

    (6)expr命令详解:

shell的变量学习
 1 NAME
 2        expr - evaluate expressions
 3 
 4 SYNOPSIS
 5        expr EXPRESSION
 6        expr OPTION
 7 
 8 DESCRIPTION
 9        --help display this help and exit
10 
11        --version
12               output version information and exit
13 
14        Print  the  value of EXPRESSION to standard output.  A blank line below
15        separates increasing precedence groups.  EXPRESSION may be:
16 
17 ARG1 | ARG2
18        ARG1 if it is neither null nor 0, otherwise ARG2
19 
20 ARG1 & ARG2
21        ARG1 if neither argument is null or 0, otherwise 0
22 
23 ARG1 < ARG2
24        ARG1 is less than ARG2
25 
26 ARG1 <= ARG2
27        ARG1 is less than or equal to ARG2
28 
29 ARG1 = ARG2
30        ARG1 is equal to ARG2
31 
32 ARG1 != ARG2
33        ARG1 is unequal to ARG2
34 
35 ARG1 >= ARG2
36        ARG1 is greater than or equal to ARG2
37 
38 ARG1 > ARG2
39           ARG1 is greater than ARG2
40 
41 ARG1 + ARG2
42        arithmetic sum of ARG1 and ARG2
43 
44 ARG1 - ARG2
45        arithmetic difference of ARG1 and ARG2
46 
47 ARG1 * ARG2
48        arithmetic product of ARG1 and ARG2
49 
50 ARG1 / ARG2
51        arithmetic quotient of ARG1 divided by ARG2
52 
53 ARG1 % ARG2
54        arithmetic remainder of ARG1 divided by ARG2
55 
56 STRING : REGEXP
57        anchored pattern match of REGEXP in STRING
58 
59 match STRING REGEXP
60        same as STRING : REGEXP
61 
62 substr STRING POS LENGTH
63        substring of STRING, POS counted from 1
64 
65 index STRING CHARS
66        index in STRING where any CHARS is found, or 0
67 
68 length STRING
69        length of STRING
View Code

  2.数组:

  bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
  类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

  (1)定义数组:
    在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
    数组名=(值1 值2 ... 值n)
  (2)读取数组:
    读取数组元素值的一般格式是:${数组名[下标]}
  (3)获取数组的长度:
    获取数组长度的方法与获取字符串长度的方法相同,例如:

1 # 取得数组元素的个数
2 length=${#array_name[@]}
3 # 或者
4 length=${#array_name[*]}
5 # 取得数组单个元素的长度
6 lengthn=${#array_name[n]}

 6、变量作用范围

  (1)用户自定义变量
    在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
    格式:
    export 变量名=变量值 [...变量名n=变量值n]
  (2)环境变量
    环境变量配置文件:
      全局配置文件:/etc/profile
      用户配置文件:~/.bash_profile
  (3)查看环境变量
    set命令可以查看所有的shell变量,其中包括环境变量

 1 #常见的环境变量
 2 $USER 查看账户信息
 3 $logname 登录相关信息
 4 $UID
 5 $Shell
 6 $HOME 家目录
 7 $pwd
 8 $PATH 用户所输入的命令是在哪些目录中查找
 9 $PS1
10 $PS2
11 $RANDOM 随机数

  (4)位置变量

1 表示为:$n (n为1~9之间的数字)
2 #./test.sh one two three four five six
3 $0 表示文件名本身
4 one就是:$1
5 two就是:$2

  (5)预定义变量

1 $# :命令行中位置参数的个数
2 $* :所有位置参数的内容
3 $? :上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0表示执行异常或出错
4 $$ :当前所在进程的进程号
5 $! :后台运行的最后一个进程号
6 $0 :当前执行的进程/程序名

 

shell的变量学习

上一篇:css与attr、trigger()与toggle()的区别


下一篇:Ubuntu20.04 网络配置