微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash脚本执行多个命令

我是新来的bash。 我的问题是,当我运行这个脚本,它只做第一个命令,并没有完成其余的。 有没有办法使bash从一个启动脚本执行所有这些命令?

我有一个启动脚本如下:

#! /bin/bash cd dockerfiles/Nginx exec docker build -t Nginx . wait cd ../percona exec docker build -t percona . wait cd ../memcache exec docker build -t memcache . wait cd ../sphinx exec docker build -t sphinx . wait cd .. exec docker build -t PHP . wait cd .. exec docker-compose up

Perl获得UTC时间,并获得UTC时间戳之间的差异

不要在ls中执行文件

wget和curl在下载时以某种方式修改bencode文件

检查参数是否是文件或目录

为什么这个命令replace不会返回期望值?

如何按date从多个日志文件中sorting输出

bash Linux – 大量文件重命名

删除包含多个单词的行

更简单的方法来重复读取行和调用程序

为什么“真”和“假”testing都是真的?

exec命令告诉bash执行execve()系统调用完成的同样的事情 – 用正在运行的程序替换它自己的进程表项

本质上,这个操作意味着脚本在完成时不再运行。 如果你不想要的话,只需取出exec前缀。

(另外,根本没有理由在这里wait ;如果一个进程是背景的,而且你没有任何背景,那么wait只会有任何效果

也就是说,您可能会考虑使用子壳来限制cd操作 – 然后exec将只替换子shell的进程,而不是父进程。 即使在这种情况下它也不是必须的,但是是一个轻微的性能优化(同样,用#!/bin/sh替换#!/bin/bash是在提供轻量级/bin/sh平台上的性能改进,因为你不是使用任何bash功能):

#!/bin/sh (cd dockerfiles/Nginx && exec docker build -t Nginx .) (cd dockerfiles/percona && exec docker build -t percona .) (cd dockerfiles/memcache && exec docker build -t memcache .) (cd dockerfiles/sphinx && exec docker build -t sphinx .) (cd dockerfiles && exec docker build -t PHP .) docker-compose up

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐