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

相关推荐

  • Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式。 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来;  远端模式:你提交的topology会在一个集群的机器上执行。 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章…

    Linux干货 2015-04-04
  • 手动添加用户

        通常使用useradd命令可以轻松添加一个用户,然后使用passwd命令设置一个密码后就可以登录系统了,其实这一过程完成可以自己手动完成,下面就让我们来通过修改配置文件来添加一个用户。 一、修改/etc/passwd文件     在etc/passwd文件中手动添加一行内…

    Linux干货 2015-04-27
  • N24_辉 学习宣言

    我志愿加入马帮的大家庭。 在此,我坚信有志者事竟成,同时,机会总是留给有准备的人的。 既来之,则安之。我的目标是能在规定的时间内结业,正如马哥所说:完成比完美更重要! 无论如何,也要完成!fighting!!!

    Linux干货 2016-10-24
  • rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,…

    Linux干货 2016-10-30
  • 文件元数据信息的含义、查看方法,和文件时间戳信息的修改方法

    文件数据分成两类 元数据,英文叫metadata,是数据的属性; 数据,英文叫data,是数据本身; 使用stat命令查看元数据信息 [0][root@localhost mylinux]# stat /etc/passwd File: ‘/etc/passwd’ Size: 889 Blocks: 8 IO Block: 4096 regular file…

    Linux干货 2018-03-01
  • 马哥教育网络班22期第5周课程作业

    1、显示当前系统上root、fedora或user1用户的默认shell; cat /etc/passwd | grep ^root | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); …

    Linux干货 2016-12-05

评论列表(1条)

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

    没问题。