bash变量和逻辑运行

bash 特性及bash脚本编程初步

      终端,附着在终端的接口程序:

     GUI:KDE,GNome,Xfce

     CLI: /etc/shells

             bash

             zsh

             fish

bash的特性:

         命令行展开:~,{}

         命令别名:alias, unalias

         命令历史:history

         文件通配:glob

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

        命令补全:$PATH

          路径补全 :

bash特性之:命令 hash

   缓存此前命令的查找结果:key-value

      hash  命令

      hash:l列出

      hash: -d COMMAND:删除

     hash -r :清空

bash的特性之:变量

       程序:指令+数据

       指令:由程序文件提供:

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

程序: 算法+数据结构

变量名+指向内存空间

变量赋值:name=value

    48762047827

变量类型:存储格式、表示格式范围,参与运算

      强类型变量

      肉类型变量:

                bash把所有变量统统是做字符型

                 bash中的变量了无需事先声明:

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

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

变量名:变量名只能包含字母,数字,下划线,而且不能以数字开头:

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

bash 变量类型:

          本地变量:  作用领域仅为当前shell进程:

           环境变量:作用领域为当前shell进程及其子进程:

           局部变量:作用域仅为某代码片段(函数上下文)

        位置参数变量:当执行脚本的shell进程传递的参数;

         特殊变量|:shell内置的有特殊功用的变量

          $?:

            0:成功

            1-255:失败

本地变量:

        变量赋值:name=value

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

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

                查看变量:set

                撤销变量:unset name

                       注意:此处非变量引用:

环境变量:

         变量赋值:

             (1)export name=value

             (2) name=value

                 export  name

             (3)declare -x name=value

             (4)name=value

                declare -x name

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

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

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

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

          撤销环境变量: unset name

只读变量:

(1) declare -r name

(2) readonly name

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

bash特性之多命令执行:

~]# COMMAND1; COMMAND2,COMMAND3;…

逻辑运算:

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

                  假(false, no, off.0)

1&&1=1

1&&0=0

0&&1=0

0&&0=0

或:

1  || 1=1

1  ||  0=1

0  ||  1=0

0  ||  0=0

! 1=0

!0=1

短路法则:

~]COMMAND1 && COMMAN2

  COMMAND1为假,则COMMAND2必须执行

~]#COMMAND1 || COMMAND2

   COMMAND1为真,则COMMAND2不会执行

   否则,COMMAND1 为假,则COMMAND2必须执行

示例:~]# id $username || useradd $username

原创文章,作者:shadow,如若转载,请注明出处:http://www.178linux.com/64525

(1)
shadowshadow
上一篇 2016-12-23
下一篇 2016-12-23

相关推荐

  • 设计模式(十)享元模式Flyweight(结构型)

    相对于其它模式,Flyweight模式在PHP实现似乎没有太大的意义,因为PHP的生命周期就在一个请求,请求执行完了,php占用的资源都被释放。我们只是为了学习而简单做了介绍。 1. 概述 面向对象技术可以很好地解决系统一些灵活性或可扩展性或抽象性的问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。…

    Linux干货 2015-07-08
  • 第四周

    第四周 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@node1 ~]# cp -r /etc/skel/ /home/tuser1 [root@node1 ~]# chmod -R go= /home/tuser1 [root@node1 ~]# ls -…

    Linux干货 2017-07-26
  • I/O重定向及管道

    一、I/O重定向     程序=指定+数据     读取数据:input     输出数据:output     打开的文件都有一个fd:文件描述符     l…

    Linux干货 2016-08-02
  • Linux第四周学习博客作业

    对第四周学习的内容进行总结

    Linux干货 2017-12-23
  • PXE批量部署linux操作系统

       前言    在实际生产环境中,有时候我们会碰到为几十上百甚至上千台服务器安装Linux操作系统的需求,如果我们还是常规的去使用移动介质逐台安装,显然是一件低效又令人抓狂的事情,那要安装到何年何月啊?这对于我们追求高逼格形象的技术人员来讲当然是不可以接受的,为此,pxe模式批量部署系统应运而生。   &n…

    Linux干货 2015-05-23