一、回顾

  1、用户管理,权限管理,install,mktemp

  2、用户管理:

  3、权限管理:

    mode,ownership

    mode:

      user

      group

      other

      r

      w

      x

  4、命令:install,mktemp

二、bash特性及bash脚本编程初步

  1、终端:附着在终端的接口程序

    GUI:KDE,GNome,Xfce

    CLI:/etc/shells

  2、bash的特性:

    a、命令行展开:~,{}

    b、命令别名:alias,unalias

    c、命令历史:history

    d、文件名通配符

    e、快捷键:Ctrl + a,e,u,k,l

    f、命令补全:$PATH

    g、路径补全:

  3、bash特性之命令hash

    a、缓存此前命令查找的结果,即命令hash。注意他只会缓存外部命令,内部命令因为是shell自带的所以不会缓存,包括hash自己也是。

[root@localhost ~]# hash
hash: hash table empty
[root@localhost ~]# ls /root/
anaconda-ks.cfg hello inittab
[root@localhost ~]# cat /etc/fstab > /dev/null
[root@localhost ~]# echo "wohaoshuai" > /dev/null
[root@localhost ~]# hash
hits command
/usr/bin/cat
/usr/bin/ls

    b、选项

      -d:忘记每一个已经记住的命令的位置

      -r:忘记所有记住的位置

[root@localhost ~]# hash
hits command
/usr/bin/cat
/usr/bin/ls
[root@localhost ~]# hash -d cat
[root@localhost ~]# hash
hits command
/usr/bin/ls
[root@localhost ~]# hash -r
[root@localhost ~]# hash
hash: hash table empty

    c、缓存对应的存储格式为:key-value

      key:搜索键

      value:值

三、bash的特性之:变量

  1、程序:指令+数据组成

    指令:由程序文件提供

    数据:IO设备,文件,管道,变量

    程序:算法+数据结构

  2、变量名+指向的内存空间

  3、变量赋值:name=value

  4、变量类型:存储格式、表示数据范围、参与的运算

    123,34=12334

  5、编程语言:

    强类型变量编程语言:比如C语言,python

    弱类型变量编程语言:

      比如bash,把所有变量统统视作字符型。bash不支持浮点数据,除非借助于外在工具。并且bash中的变量无需事先声明。相当于把声明和赋值过程同时实现。

        申明:类型,变量名

  6、变量替换:把变量名出现的位置替换为其所指向的内存空间中的数据。

  7、变量引用:${var_name},$var_name

  9、变量名:字母数字下划线组成的字符串,并且不能以数字开头。这个法则对所有的编程语言几乎都是一样的。

    变量名:见名知意,命名机制遵循某种法则。并且不能够使用程序的保留字,例如if,else,then,while等等

  10、bash变量类型

[root@node1 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─abrt-watch-log
├─abrtd
├─agetty
├─atd
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─dockerd─┬─docker-containe───8*[{docker-containe}]
│ └─8*[{dockerd}]
├─irqbalance
├─lsmd
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5*[{polkitd}]
├─rngd
├─rsyslogd───2*[{rsyslogd}]
├─smartd
├─sshd─┬─sshd───bash───su───bash
│ ├─sshd───bash
│ └─sshd───bash───pstree #我们pstree运行的位置
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}

    a、本地变量:作用域仅是当前shell进程

      变量赋值:name=value

      变量引用:${name},$name

        "":变量名会替换为其值

        '':变量名不会替换为其值

      查看变量: set命令

      撤销变量:unset name

        注意:此处非变量引用

[root@node1 ~]# first_name=wohaoshuai
[root@node1 ~]# echo ${first_name}
wohaoshuai
[root@node1 ~]# unset first_name
[root@node1 ~]# echo ${first_name}

    b、环境变量:作用域是当前shell进程及其子进程

      变量赋值:

        (1)、export name=value

        (2)、name=value

            export name (这样对子shell就有效了)

        (3)、declare -x name=value

        (4)、name=value

            declare -x name(这样也对子shell就有效了)

      变量引用:${name},$name

      注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境。

        PATH,HISTFILE,HISTSIZE,HISTFILESIZE,HISTCONTROL,SHELL,HOME,UID,PWD,OLDPWD

      查看环境变量:export,declare -x,printenv,env

      撤销环境变量:unset name

    c、只读变量:只读变量无法重新赋值,并且不支持撤销,存活时间为当前shell进程的生命周期,随shell进程终止而终止。

      (1)、readonly name

      (2)、declare -r name

[root@node1 ~]# firstname=wohaoshuai
[root@node1 ~]# echo ${firstname}
wohaoshuai
[root@node1 ~]# readonly firstname
[root@node1 ~]# firstname=wohaoshuai2
-bash: firstname: readonly variable
[root@node1 ~]# unset firstname
-bash: unset: firstname: cannot unset: readonly variable

    d、局部变量:当前shell进程中的某一个代码片段作用域(函数上下文)

    e、位置参数变量:向执行脚本的shell进程传递的参数

    f、特殊变量:通常是shell内置的有特殊功用的变量

      $?:

        0:成功

        1-255:失败

四、bash特性之多命令执行:

  1、COMMAND1;COMMAND2;COMMAND3;  :即执行完了第一个然后执行第二个,然后执行第三个...

  2、逻辑运算:

    运算数:真(true,yes,on,1)

        假(false,no,off,0)

    与:全真则真,一假全假

      1 && 1 = 1

      1 && 0 = 0

      0 && 1 = 0

      0 && 0 = 0

    或:

      1 || 0 = 1

      1 || 1 = 1

      0 || 1 = 1

      0 || 0 = 0

    非:

      ! 1 = 0

      ! 0 = 1

    异或:

    a、短路法则:前一个命令失败了后一个命令就不会执行,前一个命令成功了后一个命令才执行。

      COMMAND1 && COMMAND2

[root@node1 ~]# touch /tmp/test.etc && ls /etc/ > /tmp/test.etc
[root@node1 ~]# touchabc /tmp/test.etc && ls /etc/ > /tmp/test.etc2
-bash: touchabc: command not found
[root@node1 ~]# cat /tmp/test.etc2
cat: /tmp/test.etc2: No such file or directory

    b、如果前一个命令成功了后一个命令不运行,前一个命令失败了后一个命令才运行

      COMMAND1 || COMMAND2

[root@node1 ~]# id user1
id: user1: no such user
[root@node1 ~]# id user1 || useradd user1
id: user1: no such user
[root@node1 ~]# id user1
uid=(user1) gid=(user1) groups=(user1)

linux学习18 shell脚本基础-bash变量和逻辑运行的更多相关文章

  1. linux学习19 shell脚本基础-bash脚本编程基础及配置文件

    一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由 ...

  2. Linux学习之Shell编程基础

    转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...

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

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

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

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

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

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

  6. Shell脚本基础学习

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

  7. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  8. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

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

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

随机推荐

  1. Apache Commons 简介

    Apache Commons 由多个独立发布的软件包组成,此页面提供了当前可用的 Commons 组件的概述. Components BCEL 字节码工程库 - 分析,创建和操作 Java 类文件. ...

  2. 谈谈 Callable 任务是怎么运行的?它的执行结果又是怎么获取的?

    谈谈 Callable 任务是怎么运行的?它的执行结果又是怎么获取的? 向线程池提交Callable任务,会创建一个新线程(执行任务的线程)去执行这个Callable任务,但是通过Future#get ...

  3. 一步步在 github pages 上用 jekyll 搭建属于自己的博客

    序 我的专业与互联网没有太大关系,接触博客还是工作以后的事情.随着工作的经验增加,总想将自己的所思所得记录下来,毕竟,好记性不如烂笔头. 开始是将自己的总结在本地保存,但是本地有一个劣势,就是不能随时 ...

  4. 浅谈mongodb内存

    本文仅限于mongodb3.0.0(wiredtiger引擎) 一.mongodb内存使用 1.热数据 这一点是SQL和nosql之间的巨大差距,将热数据存在内存相当于自带cache,若wiredti ...

  5. 基于FlexBox的无约束自适应

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11972664.html,多谢,=.=~ 一.背景描述   对于通用型带过滤条件的列表查询项目中, ...

  6. .Net Core 学习路线图

    今天看  草根专栏 这位大牛的微信公众号,上面分享了一张来自github的.net core学习路线图,贴在这里,好让自己学习有个方向,这么一大页竟然只是初级到高级的,我的个乖乖,太恐怖了. 感谢大牛 ...

  7. MVC里模型常用的一些操作

    学习也是做买卖,归根到底还是学习成本的问题. 下面把微软集合类型的增删改查稍微罗列一下,大家看看它能带来的便利,和你要学的新东西,还有风险(纯粹的数据操作,不用框架,风险其实不大)相比,是否值得.来决 ...

  8. English--倒装句

    English|倒装句 这一块主要进行英语中倒装句与强调句的透析,希望大家可以掌握倒装句.因为倒装句,实在是太常见了,加油哦~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  9. 大规模定制模式之于MES的三点思考

    大规模定制(Mass Custermization) ,其目标是大规模生产定制化产品,并且在效率.质量(一致性)等指标方面与大规模批量生产等齐. 这是一种理想或者追求,其提出的背景是目前越发普遍的多品 ...

  10. WampServer出现You don’t have permission to access/on this server提示

    WampServer出现You don’t have permission to access/on this server提示 本地搭建WampServer,输入http://127.0.0.1访问 ...