弱类型语言

bash 变量类型
本地变量 环境变量 局部变量 位置参数变量 特殊变量

运行 无执行权限 bash hello.sh 有执行权限
检查语法 bash -n user.sh 跟踪每一行的执行结果bash -x user.sh
变量用完之后,记得删 unset name1 name2

一般我们在shell里定义的变量,只能存在当前shell,不同的终端登录,不同的shell进程(父子shell进程),这些都是独立的shell进程。访问不到其他shell中的变量
export NAME //设置环境变量 ,环境变量可以多个shell都可以访问到,只能从上往下传,不能从下往上传。
env 列出当前全部的环境变量

(umask 066;touch f1) //内部产生了一个子shell   只对()内的命令有效

与或 计算 短路与 短路或 在Linux shell 中 0 代表成功,1-255代表失败 0为真 1为假
命令1 && 命令1的结果为真 运行这里 || 命令1的结果为假 则运行这里

位置变量
$1, $2, ... 对应第1、第2等参数,shift [n]换位置
$0 命令本身的路径
$* 传递给脚本的所有参数,全部参数合为一个字符串
$@ 传递给脚本的所有参数,每个参数为独立字符串
$# 传递给脚本的参数的个数

shell的一些特殊符号,特殊用法
echo {1..10} //代表的是 1 2 3 4 5 6 7 8 9 10
echo {1..10..2} //代表的是 1 3 5 7 9 步长为2
echo {a..z}
echo {a,b,c} //输出了 a,b,c
'' 单引号 意义 是什么就是什么 很直
"" 双引号 只能识别变量 命令不认识
`` 反引号 当做命令执行 什么都认识 一个命令会调用另外一个命令的执行结果的时候 与$() 一样的效果

0  代表成功,1-255代表失败  $? 变量保存最近的命令退出状态

注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命 令后面的数字

设置变量:name=value

  name="ni sadsal jdsial"

    值中没有空格的话,可以不用加引号,如果很长有空格的话,就要加上引号,否则报错

引用变量:echo $name

      echo ${name}123    在输出的结果后面加上123,但是写在一起会出错,所以要{ }起来

bash中的算术运算

      +, -, *, /, %取模(取余), **(乘方),

      (1) let var=算术表达式  (2) var=$[算术表达式]  (3) var=$((算术表达式))

      生成 0 - 49 之间随机数   echo $[$RANDOM%50]

 测试命令: [ EXPRESSION ]

-gt 是否大于

-ge 是否大于等于

-eq 是否等于

-ne 是否不等于

-lt 是否小于

-le 是否小于等于

[ $USE -ge 80 -o $USE_I -ge 80 ]    -o 或者   -a 并且

字符串 测试

= 是否等于

> ascii码是否大于ascii码

< 是否小于

!= 是否不等于

=~ 左侧字符串是否能够被右侧的PATTERN所匹配    注意: 此表达式一般用于[[  ]]中;  扩展的正则表达式

-z "STRING“ 字符串是否为空,空为真,不空为假

-n "STRING“ 字符串是否不空,不空为真,空为假

文件测试

-e FILE: 文件存在性测试,存在为真,否则为假

-b FILE:是否存在且为块设备文件

-c FILE:是否存在且为字符设备文件

-d FILE:是否存在且为目录文件

-f FILE:是否存在且为普通文件

-r FILE:是否存在且可读

-w FILE: 是否存在且可写

-x FILE: 是否存在且可执行

if 条件语句

  单分支

    

  双分支

    

 if 也可以用命令退出状态做判断

if ping -c1 -W2 station1 &> /dev/null; then

echo 'Station1 is UP'

elif  grep "station1" ~/maintenance.txt &> /dev/null;  then

echo 'Station1 is undergoing maintenance'

else

echo 'Station1 is unexpectedly DOWN!'

exit 1

fi

 case判断

case 变量引用 in

PAT1)

  分支1

  ;;

PAT2)

  分支2

  ;;

...

*)

  默认分支

  ;;

esac

case支持glob风格的通配符:

  • *: 任意长度任意字符
  • ?: 任意单个字符
  • []:指定范围内的任意单个字符
  • a|b: a或b

        

read
[root@localhost ~]# read NAME AGE 自动忽略空格
hxf 20
[root@localhost ~]# echo $NAME $AGE
hxf 20

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脚本 基础应用

    变量分为普通变量可只读变量 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 ...

  9. 模块一:shell 脚本基础

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

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

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

随机推荐

  1. SpringMVC-时间类型转换

    在上一篇SpringMVC的提交表单中,我们使用的日期为String型,可以将日期转换为Date型,然后使用initBinder函数进行显示,具体代码如下: (1)首先更改User.java的birt ...

  2. testng实现代码和数据分层

    todo: 参考: https://www.cnblogs.com/znicy/p/6534893.html

  3. 【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果

    #include <stdio.h> #include<string.h> int main() { ]; int i,j,k,len; gets_s(a); len= str ...

  4. 传奇服务端添加双倍经验卷的方法 双倍经验卷轴DB示例展示

    第一步我们在DBC数据库中添加好双倍经验卷轴DB,以下是现成的双倍经验卷DB,导入到DB里面就可以了. 222;双倍经验卷;31;0;1;20;0;0;265;0;0;0;0;0;0;0;0;0;0; ...

  5. 微信小程序 获取cookie 以及设置 cookie

    小程序开发中我们需要获取到后端给的cookie进行请求验证,但是微信并没有帮我们保存cookie,那么我们要维持会话需要自己来保存cookie,并且请求的时候加上cookie 1.获取cookie 在 ...

  6. [控制台尊享] MinGW下使用 gotoxy函数

    相信用过Turbo C的童鞋都知道gotoxy这个函数吧,但由于某些原因,windows下的mingw没有直接提供这个函数. 那么gotoxy究竟是干什么的呢?假设你的程序是基于控制台的(就是一个黑窗 ...

  7. linux centos7分区

    哈喽! 我今天来分享一下Linux的分区,本次我使用的是LinuxCentos7版本为例,使用虚拟机,命令是fdisk Linux分区有4个主分区及扩展分区,逻辑分区. 首先给虚拟机添加8G硬盘(硬盘 ...

  8. Jmeter注册100个账户的三个方法

    Jmeter注册账户比如注册成千上万个账户,如何快速实现呢? 三种方法分别举例注册5个账户 1)添加CSV data config_txt 2)添加CSV data config_csv 3)函数助手 ...

  9. 数据库程序接口——JDBC——API解读第三篇——处理结果集的核心对象

    核心对象 处理结果集的核心对象有ResultSet和RowSet.其中ResultSet指定关系型数据库的结果集,RowSet更为抽象,凡是由行列组成的数据都可以. ResultSet ResultS ...

  10. springboot无法查询到后台的数据

    问题:springbooot中,整合mybatis时,在IUserMapper接口中, @Select("select * from user where name like '%李%'&q ...