变量分为普通变量可只读变量
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#普通变量#!/bin/bashname="chen" echo "${name}"
下面是执行结果---------------------------[root@localhost ~]# sh t1.sh
chen#只读变量 只读变量就是只可以阅读,不可以进行二次修改#!/bin/bashname="chen"
readonly name
name="chenyiyuan"
下面是执行结果------------------------------[root@localhost ~]# sh t1.sh
t1.sh:行4: name: 只读变量#删除变量#!/bin/bashname="chen"
unset name
echo "${name}"
下面是执行效果 执行效果为空-------------------------------[root@localhost ~]# sh t1.sh
:<<EOF给变量命名的注意事项: 1.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
2.中间不能有空格 不可以使用下划线
3.不能使用标点符号
4.不可以使用bash中的关键字
EOF:<<EOF变量的类型 1.局部变量
2.环境变量:
可以自己定义环境变量
[root@localhost ~]# vim /etc/profile
-----------------------
export NAME="chen"
-----------------------
[root@localhost ~]# source /etc/profile //执行这条命令之后才可以是环境变量生效,在任何的shell脚本中都可以使用
EOF |
特殊变量
| 特殊变量 | 含义 |
| $$ | Shell本身的PID(ProcessID) |
| $! | Shell最后运行的后台Process的PID |
| $? | 最后运行的命令的结束代码(返回值) |
| $- | 使用Set命令设定的Flag一览 |
| $* | 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
| $@ | 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
| $# | 添加到Shell的参数个数 |
| $0 | Shell本身的文件名 |
| $1~$n | 添加到Shell的各参数值。$1是第1参数、$2是第2参数… |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/bin/bashecho "shell的本身ID为: $$"
echo "执行的文件名为: $0"
echo "第一个参数为: $1"
echo "第二个参数为: $2"
echo "第三个参数为: $3"
echo "所有传递的参数个数为: $#"
echo "所有传递的参数: $* $@"
执行结果-----------------------------------------[root@localhost ~]# sh t1.sh 1 2 3
shell的本身ID为: 26861执行的文件名为: t1.sh第一个参数为: 1第二个参数为: 2第三个参数为: 3所有传递的参数个数为: 3所有传递的参数: 1 2 3 1 2 3————————————————————————————————————————— |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
:<<EOF单引号和双引号的区别: 1.单引号中的任何字符都会以字符串的形式输出,所以如果变量是用单引号引起来的就是无效的变量
#!/bin/bash
name="chen"
echo '${name}'
执行效果如下------------------------------- [root@localhost ~]# sh t1.sh
${name}
------------------------------- 2.双引号中可以有变量,而且可以有转义字的出现
----------------------------------
#!/bin/bash
name="chen"
str="hello,my name is \"$name\" \n"
echo -e ${str} //-e可以识别转义字符
-----------------------------------
执行效果如下 可以看出换了一行
-------------------------
[root@localhost ~]# sh t1.sh
hello,my name is "chen"
EOF获取字符串的长度#!/bin/bashname="chen"
echo ${#name}
执行结果------------------------------[root@localhost ~]# sh t1.sh
4------------------------------提取字符串中的子字符串#!/bin/bashname="chen19990920"
echo ${name:4:5} //冒号后面的第一个数字是字符串的下标,就是从哪里开始提取,后面的一个数字是要提取多少个字符
执行结果---------------------------[root@localhost ~]# sh t1.sh
19990---------------------------查找一个字符串中某个字符的个数#!/bin/bashname="chen19990920"
echo `expr index "${name}" 9`
执行结果-------------------------------[root@localhost ~]# sh t1.sh
6
------------------------------- |
|
1
|
:<<EOF |
-:对两个变量做减法。
*:对两个变量做乘法。 //需要加转义字符
/:对两个变量做除法。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
EOF<br><br>#!/bin/bash
a=10b=2echo `expr $a + $b`
echo `expr $a - $b`
echo `expr $a \* $b`
echo `expr $a / $b
执行结果------------------------------[root@localhost ~]# sh t1.sh
128205-----------------------------<br>:<<EOF |
**:对两个变量做幂运算。
%:取模运算,第一个变量除以第二个变量求余数。
+=:加等于,在自身基础上加第二个变量。
-=:减等于,在第一个变量的基础上减去第二个变量。
*=:乘等于,在第一个变量的基础上乘以第二个变量。
/=:除等于,在第一个变量的基础上除以第二个变量。
%=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。
|
1
|
EOF |