变量分为普通变量可只读变量

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/bash
name="chen" 
echo "${name}"
 
下面是执行结果
---------------------------
[root@localhost ~]# sh t1.sh
chen
 
 
#只读变量 只读变量就是只可以阅读,不可以进行二次修改
#!/bin/bash
name="chen"
readonly name
name="chenyiyuan"
 
下面是执行结果
------------------------------
[root@localhost ~]# sh t1.sh
t1.sh:行4: name: 只读变量
 
#删除变量
#!/bin/bash
name="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/bash
echo "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
—————————————————————————————————————————

  

shell字符串

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/bash
name="chen"
echo ${#name} 
执行结果
------------------------------
[root@localhost ~]# sh t1.sh
4
------------------------------
 
提取字符串中的子字符串
#!/bin/bash
name="chen19990920"
echo ${name:4:5}  //冒号后面的第一个数字是字符串的下标,就是从哪里开始提取,后面的一个数字是要提取多少个字符
执行结果
---------------------------
[root@localhost ~]# sh t1.sh
19990
---------------------------
 
查找一个字符串中某个字符的个数
#!/bin/bash
name="chen19990920"
echo `expr index "${name}" 9`
 
执行结果
-------------------------------
[root@localhost ~]# sh t1.sh
 6
-------------------------------

  

shell算数运算符

1
:<<EOF

+:对两个变量做加法。

-:对两个变量做减法。

*:对两个变量做乘法。 //需要加转义字符

/:对两个变量做除法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
EOF<br><br>#!/bin/bash
a=10
b=2
echo `expr $a + $b`
echo `expr $a - $b`
echo `expr $a \* $b`
echo `expr $a / $b
执行结果
------------------------------
[root@localhost ~]# sh t1.sh
12
8
20
5
-----------------------------<br>:<<EOF

**:对两个变量做幂运算。

%:取模运算,第一个变量除以第二个变量求余数。

+=:加等于,在自身基础上加第二个变量。

-=:减等于,在第一个变量的基础上减去第二个变量。

*=:乘等于,在第一个变量的基础上乘以第二个变量。

/=:除等于,在第一个变量的基础上除以第二个变量。

%=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。

1
EOF

  

shell循环

for循环

while循环

shell脚本 基础应用的更多相关文章

  1. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  2. shell脚本-基础

    shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...

  3. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  4. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  5. Shell脚本基础学习

    Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...

  6. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  7. shell脚本基础知识

    虽然现在能在Linux系统下生存,但是自觉效率太低,和高手有很大的差距. 这就是关于Linux的知识太过匮乏,有很多事情知道该怎么做,但是就是没法在Linux下实现,为了提升工作效率,必须要接触Lin ...

  8. 模块一:shell 脚本基础

    一.shell脚本介绍 (一)脚本案例及介绍: #!/bin/bash LOG_DIR=/var/log ROOT_UID=0 if ["$UID -ne "$ROOT_UID&q ...

  9. shell脚本基础知识以及变量

    一.基础知识 1.shell脚本的格式注意事项 第一行(一般必须写明):指定脚本使用的shell(若不写明也不影响脚本的执行,系统会自动以sh解析脚本)."#!/bin/bash" ...

随机推荐

  1. STL源码剖析——序列式容器#3 Deque

    Deque是一种双向开口的连续线性空间.所谓的双向开口,就是能在头尾两端分别做元素的插入和删除,而且是在常数的时间内完成.虽然Vector也可以在首端进行元素的插入和删除(利用insert和erase ...

  2. php数组到json的转变

    今天做项目遇到个问题,一个接口,输出二维数组,前端说他要的数据格式是数组,而不是对象,就像上个数据一样,我当时就懵逼了,,,什么对象?我明明输出的是数组啊...然后我看了看我返回的json串,emmm ...

  3. C语言 小球撞击反弹

    计算法(略) #include <stdio.h> #include <stdlib.h> int main() { int x, y, a, resu; scanf(&quo ...

  4. 上传docker镜像到阿里云镜像源

    阿里云docker镜像配置 阿里云用户名可以使用淘宝系的,或者新注册都行. a. 配置阿里云的镜像加速器:加速器 然后在线上创建`镜像仓库`,需要设置`命名空间`和`仓库名称`,然后接着操作下面的步骤 ...

  5. 通过 SMB 共享目录

    在 system1 上配置SMB服务 ,要求: 1.您的 SMB 服务器必须是 STAFF 工作组的一个成员 2.共享 /common 目录,共享名必须为 common 3.只有 group8.exa ...

  6. Luogu2481 SDOI2010 代码拍卖会 DP、组合

    传送门 神仙DP 注意到\(N \leq 10^{18}\),不能够直接数位DP,于是考虑形成的\(N\)位数的性质. 因为低位一定不会比高位小,所以所有满足条件的\(N\)位数一定是不超过\(9\) ...

  7. 你也可以写个聊天程序 - C# Socket学习1

    原文:你也可以写个聊天程序 - C# Socket学习1 简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单 ...

  8. 勒索病毒,华为/H3C三层交换机/路由器用ACL访问控制实现端口禁用

    前不久勒索病毒横行,很多人都纷纷中招,从公司到个人,损失相当惨重.有些公司在互联网入口上做了控制,但是这样并非完全,万一有人把中了毒的U盘插入网内设备上呢?那我们的内网中很有可能集体中招(打过相关补丁 ...

  9. C#泛型集合之——列表

    列表基础 1.列表概述:列表与哈希集合不同之处在于,它的元素可以重复.(更接近逻辑上的数组,而哈希集合更接近于数学上的集合) 2.创建及初始化: (1)List<类型> 列表名 =new ...

  10. 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

    JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...