当前位置: 首页 > news >正文

在Linux命令行中一行执行多个命令

原文地址链接: https://kashima19960.github.io/2024/10/22/Linux/在Linux命令行中一行执行多个命令/,一般有最新的修改都是在我的个人博客里面,所以在当前平台的更新会比较慢,请见谅😃

前言

在shell中一个一个命令行,这通常很低效,因此后面就出现了shell脚本,所谓的shell脚本就是指一堆命令的集合,然后一起执行,那么本文就会阐述shell脚本的其中一个基础——在一行内执行多条命令

在讲述方法前,我们先来看一个问题问题:用apt安装软件的时候,你肯定都会先更新软件源,然后再安装软件,有没有方法可以在一行做到呢?

方法

有三种方式可以做到这个操作

  1. [ ; ]

特点:如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令。

[root@localhost etc]# lld ; echo "ok" ; lok
-bash: lld: command not found
ok
-bash: lok: command not found
  1. [ && ]

特点:如果命令被 && 所分隔,那么命令也会一直执行下去,但是中间有错误的命令存在就不会执行后面的命令,没错就直行至完为止。

[root@localhost etc]# echo "ok" && lld && echo "ok"
ok
-bash: lld: command not found
  1. [ || ]

特点:如果每个命令被双竖线 || 所分隔,那么一遇到可以执行成功的命令就会停止执行后面的命令,而不管后面的命令是否正确与否。如果执行到错误的命令就是继续执行后一个命令,一直执行到遇到正确的命令为止。

[root@localhost etc]# echo "ok" || echo "haha"
ok
[root@localhost etc]# lld || echo "ok" || echo "haha"
-bash: lld: command not found
ok

那么回到最初的问题,在一行更新并安装软件可以用下面的方式做到

sudo apt update;sudo apt install software

如何进行选择

以上的三种方法都可以实现一行执行多个命令,但是他们之间的用法是有区别的,下面我简要概括一下每种方式的使用场景

  1. 命令的执行的结果之间无逻辑关系,比如
ls -a .;ls -a /

这两个命令执行是否成功,都不会影响到彼此,因此这种情况下,使用分号(;)即可

  1. 命令的执行的结果之间有逻辑关系

假如后一个命令必须依赖前一个命令,这种情况下就使用&&

比如

$ cat file.txt && ls -l file.txt

上面例子中,只有cat命令执行成功,才会继续执行ls命令。如果cat执行失败(比如不存在文件flie.txt),那么ls命令就不会执行。

假如后一个命令是作为前一个命令的替补选择的话,这种情况就使用||

比如

$ mkdir foo || mkdir bar

上面例子中,只有mkdir foo命令执行失败(比如foo目录已经存在),才会继续执行mkdir bar命令。如果mkdir foo命令执行成功,就不会创建bar目录了。

http://www.lryc.cn/news/466317.html

相关文章:

  • u盘快速格式化后怎么恢复文件:深入解析与全面指南
  • 青少年编程能力等级测评CPA C++(二级)试卷(2)
  • aws 把vpc残留删除干净
  • 平衡二叉树最全代码
  • 数据库表的创建
  • 【MySQL 数据库】之--基础知识
  • Flume面试整理-如何处理Flume中的数据丢失
  • 文件处理新纪元:微信小程序的‘快递员’与‘整理师’
  • 应付账款优化,自动化管理5要点
  • Win安装Redis
  • 手把手带你安装U9【win10+sql+U9】,同样适用U9C的安装
  • 若依前后端框架学习——新建模块(图文详解)
  • 【LaTeX和Word版】写论文时如何调整公式和文字的间距
  • 快乐数--双指针
  • 论文阅读-三维结构几何修复(导-4)
  • 数字货币交易所源码开发:场外(OTC)与币币交易所系统的构建指南
  • C++ 进阶:类相关特性的深入探讨
  • C++ 多态、虚析构、模板类、常函数、虚继承、虚函数和纯虚函数相关知识和问题总结
  • 计算机组成原理一句话
  • 【Linux】僵尸进程和孤儿进程
  • Patchcore运行过程
  • 一小时快速入门Android GPU Inspector
  • 二叉树展开为链表
  • 基于SpringBoot+Vue+uniapp微信小程序的教学质量评价系统的详细设计和实现
  • 【二刷hot100】day 4
  • 10.22学习
  • 【不要离开你的舒适圈】:猛兽才希望你落单,亲人总让你回家,4个维度全面构建舒适圈矩阵
  • OpenIPC开源FPV之Channel配置
  • UG NX12.0建模入门笔记:1.0 UG NX12.0安装教程
  • 【C++】踏上C++学习之旅(三):“我“ 与 “引用“ 的浪漫邂逅