弱类型语言

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. HDU 6740 kmp最小循环节

    题意:给一个无线循环小数的前几位,给n,m 选择其中一种出现在前几位的循环节方式(a个数),循环节的长度b 使得n*a-m*b最大 样例: 2 1 12.1212 输出 6 选择2,2*1-1*1=1 ...

  2. 一段讯飞、百度等语音识别API无法识别的语音最终解决办法

    最近在做语音识别.字幕扒词相关的工作,遇到了一段录音(https://download.csdn.net/download/u014220286/12169183,各位有兴趣的可以下载下来试试),音质 ...

  3. c#显示行号设置方法

    工具→选项→文本编辑器→c#→常规→显示→勾选行号 反之取消即可.

  4. 2.4 【配置环境】TestNG安装

    两种方法可以安装TestNG Eclipse插件:  (来源:http://blog.csdn.net/hongchangfirst/article/details/7679849/) 第一种,离线安 ...

  5. python evel()的用法

    老生常谈部分: eval(expression[, globals[, locals]]) expression -- 表达式. globals -- 变量作用域,全局命名空间,如果被提供,则必须是一 ...

  6. mybatis - mapper.java 的创建

    一. Mapper.java 创建过程 在前面注册 bean 的时候, 对beanClass 进行了替换, 为 MapperFactoryBean. 那么创建实例的时候, 会调用 MapperFact ...

  7. 开学考试学生成绩管理Java

    首先student类 package xuexi; public class Student { private String stunumber; private String name; priv ...

  8. PAT 1013 Battle Over Cities (dfs求连通分量)

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  9. html学习-第二集(CSS)

    head标签里面添加style标签,可以为标签添加样式 id选择器 类选择器 标签选择器 层级选择器 组合选择器 属性选择器 <!DOCTYPE html> <html lang=& ...

  10. Linux 服务器作为Nginx web服务器常见优化参数

    内核参数调整cat /etc/sysctl.conf# sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/ ...