linux shell 执行多个命令的方法

2023-05-16

(1)在每个命令之间用;(分号)隔开。

 

(2)在每个命令之间用&&隔开。

&&表示:若前一个命令执行成功,才会执行下一个。这样,可确保所有的命令执行完毕后,其执行过程都是成功的

这种执行方法,经常运用在自动安装的Script中。

例如:自动安装Apache及PHP的Script文件:

#! /bin/bash

# 解压

tar xvzf httpd-2.2.tar.gz &&

tar xvzf php-5.3.tar.gz &&

#设定Apache

echo "Configure apache……" &&

cd httpd-2.2 &&

 make &&

make install &&

……

echo "done"

echo 

这个Script文件,各指令都用&&串接,因此,若顺利执行完毕,表示中间的编译过程无误,并且,在执行后,安装确实是成功的。

另外,在script文件中,如果某一行太长写不完,可以行末,放置接续上行的符号"/"

 

(3)在每个命令之间用||隔开。

||表示:若前一个命令执行成功,就不会执行下一条了

 

(4)也可以把数个命令弄成一组,然后整组去执行它,方法有二:

1、(命令1;命令2;命令3;……)

()会开启一个子Shell环境来执行此括号中的命令组。

以下是把一组命令放入后台中执行的范例:

(sort mydate -o test.txt;procdata test.txt) &&

2、{ 命令1;命令2;命令3;…… }   //注意,{的右边有一空格,}的左边也有一空格。

与上一种方法不同的是,此法是把这些命令组成在现行的Shell中执行,而非在子Shell中执行。

特别要注意的是,在”{“的右边 和”}“的左边,至少要间隔一个以上的空格,而且每个命令都要以;(分号)作为结尾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux shell 执行多个命令的方法 的相关文章

  • 使用 SED 将单词的第一个字母大写

    如何将单词的第一个字母替换为大写字母 例如 Trouble me Gold rush brides into Trouble Me Gold Rush Brides 这一行应该做到这一点 sed e s b u 1 g
  • Laravel:调用未定义的函数 Symfony\Component\Console\mb_convert_variables()?

    我正在运行普通 Amazon EC2 服务器 我自己安装了 PHP 5 5 21 我的 Web 应用程序是基于 Laravel 构建的 几个星期以来 一切都进展顺利 然而 现在 当运行 Laravel 命令来更新数据库架构时 php 工匠迁
  • 如何为自定义应用程序选择静态端口号?

    我们有一个自定义应用程序 需要在其自己的端口号上处理请求 我们真的不在乎这个数字是多少 尽管我们在决定后会坚持使用该端口 如何选择最不可能与用户系统上运行的其他应用程序或服务发生冲突的数字 我们应该遵循什么规则或标准吗 澄清 一旦我们选择了
  • 使用 EOF 在未命名管道上发出信号

    我有一个测试程序 它使用使用 pipeline 创建的无名管道在 Linux 系统上使用 fork 创建的父进程和子进程之间进行通信 通常 当发送进程关闭管道的 write fd 时 接收进程从 read 返回值为 0 表示 EOF 然而
  • 如何让 Jenkins 2.0 在与结帐相同的目录中执行 sh 命令?

    这是我的 Jenkins 2 x 管道 node master stage Checkout checkout scm stage Build Pex sh build sh 当我运行此管道时 签出会按预期将代码放入工作区 但是它并没有期望
  • 如何通过jiffies实现经过时间

    我想了解如何在 C 中使用 jiffies 实现经过时间 假设我有一系列指令 include
  • Linux:如何调试 SIGSEGV?如何追踪错误源?

    我的火狐浏览器从今天开始崩溃了 我没有更改系统或 Firefox 配置上的任何内容 I use strace ff o dumpfile txt firefox来追踪问题 这没什么大帮助 我在两个生成的进程转储中看到了段错误 但我怎样才能t
  • 在 bash tee 中,正在将函数变量设置为本地函数,我该如何逃避这个问题?

    我一直坚持使用 bash scipt 它应该同时写入标准输出和文件 我正在使用函数和其中的一些变量 每当我尝试将函数重定向到文件并用 tee 在屏幕上打印时 我无法使用在函数中使用的变量 因此它们以某种方式变成本地变量 这是一个简单的例子
  • 具有多个文件扩展名的查找命令

    我正在查看许多子目录 找到所有以 JPG jpg 和 png 结尾的文件 并将它们复制到一个单独的目录中 但是现在只找到 JPG 有人可以解释我做错了什么吗 find root TEST Images name png o name jpg
  • 是什么决定了 getdents 返回目录条目的顺序?

    背景是我有一个现有的应用程序 其中列出了目录条目 strace 显示它只是调用 getdents 并按返回的顺序列出它们 我希望它们以与不带参数调用 ls 相同的顺序显示 是否可以通过某种方式更新目录数据来实现此目的 FS 是 ext4 如
  • 如何将域名附加到我的服务器? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个小问题 查看了这里和其他论坛 但找不到解决方案 我的网站位于 my domain com 网站位于共享主机上 在我的域名注册中 我添加了当我为
  • 使用 find 和 xargs 交互删除文件

    我正在尝试将一些文件从 find 命令传输到交互式删除命令 以便我可以仔细检查要删除的文件 但我遇到了一些麻烦 find name print0 xargs 0 rm i 我认为上面的方法可行 但我只得到一串 rm remove regul
  • PHP 中是否有相当于 subprocess 的东西?

    在 Java 和 Python 中 你有ProcessBuilder or 子流程 https docs python org 2 library subprocess html可让您使用未转义字符串轻松启动进程的模块 例如 ls some
  • 如何使用 echo 命令写入并附加到文件

    我正在尝试编写一个脚本 它将使用 echo 并写入 附加到文件 但我的语法中已经有了 字符串 说 echo I am Finding difficult to write this to file gt file txt echo I ca
  • Linux find 命令权限被拒绝

    我想过滤掉不必要的信息 权限被拒绝 这些是命令 的输出find type f name sources list find run lxcfs Permission denied find run sudo Permission denie
  • sed 将带空格的行插入到特定行

    我在开头有一行空格 例如 Hello world 我想将此行插入到文件中的特定行 例如 将 hello world 插入下一个文件 hello world result hello hello world world 我正在使用这个 sed
  • Ubuntu 12.04.5 LTS 中无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器

    我遇到了错误无法在 Ubuntu 12 04 5 LTS 中通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 So I 卸载了mysql 5 5从 Ubuntu 12 04 5 LTS 开始
  • 拼写检查 shell 脚本

    我有一些疑问 我对一个应该是简单拼写检查器的脚本有疑问 它的目的是 当发现错误的单词时 它会提示用户输入该单词的正确拼写 如果用户输入正确的拼写 则会显示更正的单词以及错误的单词 下面 在读完所有单词之后 但是 如果用户只是按 Enter
  • 如果文件没有行尾字符,则 wc -l 不计算文件的最后一个

    我需要计算 unix 文件的所有行数 该文件有 3 行 但是wc l仅给出 2 个计数 我知道它不计算最后一行 因为它没有行尾字符 任何人都可以告诉我如何计算这一行吗 grep c返回匹配行的数量 只需使用一个空字符串 作为您的匹配表达式
  • Bash:检查是否给出了参数(例如是否有参数“-a”?)

    我有一个脚本 它应该接受 2 个参数 s 和 d 如果未给出 d 参数 我想删除我的调试文件 与 s 相同 如何检查 1 或 2 是否为 s 或 d 舒尔有两个参数 我可以做到 蛮力 if test 1 d test 2 d then rm

随机推荐