bash工作特性之命令执行状态返回值和命令行展开的讲解和实例

  • 命令执行状态返回值
    在Linux bash中可以用命令执行状态返回值来判断命令是否运行成功,而不需去关心命令返回的结果是多少。

    • bash通过状态返回值来得到输出结果;
      • 成功:返回值 0
          [root@localhost tmp]# ls
          aaa
          [root@localhost tmp]# mkdir $(date +%H-%m-%S)
          [root@localhost tmp]# ls
          04-02-49  aaa
          [root@localhost tmp]# echo $?
          0
      • 失败:返回值 1-255
        [root@localhost tmp]# ls llllllll
        ls: cannot access llllllll: No such file or directory
        [root@localhost tmp]# echo $?
        2
    • 命令执行完成后,状态返回值保存在bash的特殊变量$?中;
      $?只能获取最近一条命令的状态结果,还可以把 $?放在提示符里去,这样每次运行命令都能看到状态结果;

      [root@localhost tmp]# export PS1="[\$?]${PS1}"
      [0][root@localhost tmp]# ls llll
      ls: cannot access llll: No such file or directory
      [2][root@localhost tmp]#
    • 命令正常执行时,有的还会有命令返回值; 根据命令及其功能的不同,返回结果各不相同;
      引用命令的执行结果:$(COMMAND) 或 ‘COMMAND’
  • 命令行展开
    在Linux bash中使用命令行展开一步完成需要分开成多步完成的操作,而达到事半功倍的效果。在Linux指令参数位置使用”{}” 将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。

    1. 创建/tmp目录下的:a_c, a_d, b_c, b_d
      [0][root@localhost aabb]# ll
      total 0
      [0][root@localhost aabb]# mkdir {a,b}_{c,d}
      [0][root@localhost aabb]# tree
      .
      ├── a_c
      ├── a_d
      ├── b_c
      └── b_d
    2. 创建/tmp/mylinux目录下的:
      [0][root@localhost tmp]# ll
      total 0
      [0][root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
      [0][root@localhost mylinux]# tree
      .
      ├── bin
      ├── boot
      │   └── grub
      ├── dev
      ├── etc
      │   ├── rc.d
      │   │   └── init.d
      │   └── sysconfig
      │       └── network-scripts
      ├── lib
      │   └── modules
      ├── lib64
      ├── proc
      ├── sbin
      ├── sys
      ├── tmp
      ├── usr
      │   └── local
      │       ├── bin
      │       └── sbin
      └── var
       ├── lock
       ├── log
       └── run
      24 directories, 0 files

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91789

(1)
华龙华龙
上一篇 2018-03-01
下一篇 2018-03-01

相关推荐

  • 系统管理之程序包管理(一) rpm详解

    系统管理之程序包管理(1):     程序包管理是运维人员的基本工作素质之一。在操作系统上,不断的安装,卸载,配置应用程序包,让不同程序包运行提供不同的服务;利用某种工具完成某些操作的过程。这就要求运维工作人员熟悉安装,管理应用程序包。 在linux上,程序包主要有两种:tar,rpm包。 一、程序包概述: 系统接口   &nb…

    Linux干货 2016-08-21
  • Linux终端类型

    在linux系统中,用户经常要使用各种终端和操作系统进行交互,实现用户的任务。Linux各种终端的工作方式基本都通过字符命令行的方式完成,通过终端输入命令完成相应结果。通过who命令可查看用户通过哪些终端方式连接到操作系统。通过tty命令查看当前是通过第几个tty登录的。 Linux系统的终端包含如下几种类型: 1) 物理终端 物理终端,又称控制台…

    Linux干货 2016-10-17
  • 教你使用rpm、yum、编译等方式安装软件

    一、什么是包管理器?     很多人都不知道包管理器的概念,首先我们要了解软件是如何运行的,我们这里介绍C程序如何实现从代码到执行程序的过程。         程序源代码–> 预处理–> 编译&#8211…

    Linux干货 2016-03-09
  • 用户创建过程&grep练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     ~]# cp -r /etc/skel /home/tuser1     ~]# ls -la /home/tuser1  &…

    Linux干货 2016-10-17
  • LVM逻辑卷管理

    前言     通常情况下,在操作系统上新建了一个分区并在此分区创建文件系统后,该文件系统的大小就固定了。假如要增加此文件系统的大小,我们不得不添加一块硬盘并重新分区,创建文件系统,然后把原文件系统的数据完整复制过来。如果第二次分区时分配的空间太大,用不完又浪费该怎么办呢?重复此前的流程又将花费大量的时间,有没有更便捷的…

    Linux干货 2015-05-04
  • 网络管理

                 网络管理 一、 OSI七层模型   OSI七层模型结构如下            OSI七层模式基本只是用于我们学习时候使用,因为其将每层协议定义的太规范,导致缺乏灵活性,所以现实中仍然以tcp/ip四层模型为主,OSI七层模型从下至上依次为:      1、 物理层( physical layer)   物理层是通过网络介质(如网…

    Linux干货 2016-09-06

评论列表(1条)

  • 马哥教育
    马哥教育 2018-03-20 21:49

    没问题。