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

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. python ---socket初识

    python网络编程(初识) 一些概念 套接字: 套接字(socket)也叫通信端点,最初用于计算机内部进程之间的通信,而随着网络的发展,套接字被用于计算机之间的通信.举个例子,你(是一台计算机)要打 ...

  2. flask源码系列

    更新中 HTML文档中元素存在,但是在浏览器中不显示.一般用于配合JavaScript代码使用. 04 LocalStack和Local对象实现栈的管理 05 Flask源码之:配置加载 06 Fla ...

  3. SQL Server日志处理及安全访问

    1.点SQL SERVER错误日志,右键,配置,限定错误日志的数目,比如6个 限制日志增长数量 2.然后运行命令: EXEC sp_cycle_errorlog ; 这个命令的作用是将当前日志归档,然 ...

  4. vuex的Store简单使用过程

    介绍 Store的代码结构一般由State.Getters.Mutation.Actions这四种组成,也可以理解Store是一个容器,Store里面的状态与单纯的全局变量是不一样的,无法直接改变st ...

  5. 向Spring 容器中注入对象的几种方法

    1.使用@Bean 注解,用于注入第三方 jar 包到SpringIOC容器中. 2.使用 @Import({Order.class, Member.class, MyImportBeanDefini ...

  6. WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口

    原文:WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口 当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口.但是,如果直接判断是否是 W ...

  7. hibernate左连接查询时在easyUI的dataGrid中有些行取值为空的解决办法

    1 当使用left join左连连接,sql语句为 select t from SecondPage t left join t.rightNavbar n where 1=1 页面中出现了部分空行的 ...

  8. Parameter 0 of method sqlSessionTemplate in org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration required a single bean, but 2 were found:

    Parameter 0 of method orderSqlSessionFactory in com.config.MultipleDBConfig required a single bean, ...

  9. Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)

    Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...

  10. Flask--静态资源

    静态资源 from flask import Flask, render_template app = Flask(__name__, template_folder="templates& ...