社区首页 >问答首页 >Bash导出忽略set -ex

Bash导出忽略set -ex
EN

Unix & Linux用户
提问于 2018-02-27 05:58:58
回答 1查看 933关注 0票数 8

我今天遇到了一些奇怪的行为:

代码语言:javascript
代码运行次数:0
复制
#!/bin/bash
set -ex
export a=$(cat foo)
echo "It's a living thing"
b=$(cat foo)
echo "This won't make it"

这在cat foo上是不会停止的,即使foo不存在。但如果没有出口,它就会失败。为什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-27 06:04:22

在:

代码语言:javascript
代码运行次数:0
复制
a=$(cmd)

这是一个没有命令部分的简单命令,所以退出状态是命令替换的状态。在:

代码语言:javascript
代码运行次数:0
复制
a=$(cmd) export a

代码语言:javascript
代码运行次数:0
复制
export a="$(cmd)"

这里有一个命令部分(即使在某些shell中,export在命令和关键字之间),所以返回它的退出状态。如果cmd失败并没有产生任何输出,export a=仍将运行并成功,因此export将返回0退出状态。

在这里你会想:

代码语言:javascript
代码运行次数:0
复制
a=$(cmd)
export a

或者更好的是,摆脱不可靠的set -e,手工进行正确的错误处理:

代码语言:javascript
代码运行次数:0
复制
a=$(cmd) || exit
export a

有关为什么和如何BashFAQ 015:“为什么-e不按我的预期来做呢?”可以产生意外结果的更多示例,请参见set -e

票数 16
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/426943

复制
相关文章
uwsgi php,Nginx+uWSGI[通俗易懂]
fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动。
全栈程序员站长
2022/10/01
4970
uwsgi php,Nginx+uWSGI[通俗易懂]
Nginx + uWSGI + Pyt
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
py3study
2020/01/07
5420
nginx与uWSGI[通俗易懂]
今天同事问了我一个问题,nginx和uWSGI的区别是啥?我当时答出了反向代理和静态文件,后来聊到了负载均衡,所以 好好查了下两者的区别。
全栈程序员站长
2022/10/01
9490
nginx与uWSGI[通俗易懂]
Django Uwsgi Nginx
Nginx 编译安装 Nginx # 依赖较多 gcc gcc-c++ autoconf automake openssl wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0 # 配置并安装 cd nginx-1.18.0 ./configure make && make install 工具安装 -- 推荐 # 配置yum仓库 cd /etc/yum.repos.d/ vim nginx.repo # [ng
vanguard
2020/01/22
6200
uwsgi是什么_uwsgi怎么读
大家好,又见面了,我是你们的朋友全栈君。 uWSGI是实现了了uwsgi和WSGI两种协议的Web服务器器 Web应⽤用的本质就是: 1. 浏览器器发送⼀一个HTTP请求; 2. 服务器器收到请求,⽣生成⼀一个HTML⽂文档; 3. 服务器器把HTML⽂文档作为HTTP响应的Body发送给浏览器器; 4. 浏览器器收到HTTP响应,从HTTP Body取出HTML⽂文档并显示。 所以,最简单的Web应⽤用就是先把HTML⽤用⽂文件保存好,⽤用⼀一个现成的HTTP服务器器软件,接收⽤用户请求,从⽂文件中读 取HTML,返回。Apache、Nginx、Lighttpd等这些常⻅见的静态服务器器就是⼲干这件事情的。 如果要动态⽣生成HTML,就需要把上述步骤⾃自⼰己来实现。不不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是 苦⼒力力活,如果我们⾃自⼰己来写这些底层代码,还没开始写动态HTML呢,就得花个把⽉月去读HTTP规范。 正确的做法是底层代码由专⻔门的服务器器软件实现,我们⽤用Python专注于⽣生成HTML⽂文档。因为我们不不希望接触到TCP 连接、HTTP原始请求和响应格式,所以,需要⼀一个统⼀一的接⼝口,让我们专⼼心⽤用Python编写Web业务。 这个接⼝口就是WSGI:Web Server Gateway Interface。 ⽆无论多么复杂的Web应⽤用程序,⼊入⼝口都是⼀一个WSGI处理理函数。 application(environ, start_response), HTTP请 求的所有输⼊入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。
全栈程序员站长
2022/10/03
1.1K0
使用nginx + uWSGI运行flask程序
老高最近写了一个flask小应用,功能很简单,就是通过读取配置再显示ss的二维码配置,不过想让他运行起来统一管理,还是费了一些周折啊。
老高的技术博客
2022/12/28
5240
Install Django Nginx uWSGI
概述 最近项目需要安装和配置多站点环境,所以把多站点开发环境配置和安装记录下来,帮助其他人少走坑。 安装Python 2.7.x 首先安装一些开发环境基本的包和类库, yum groupinstall "Development tools" yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel 安装完成之后,我们接下来安装Python。我在
吕海峰
2018/04/03
9220
Django + Nginx + uWSGI 部署
英文原文请参照此文:Setting up Django and your web server with uWSGI and nginx。我只是稍微翻译并总结了一下。
Gaussic
2020/07/03
1.1K0
使用 uWSGI + Nginx 部署 Flask 应用
在这篇文章之前,所有的应用都是在命令行使用 Python 直接运行的,但是这种方式只适合在开发过程中使用,并不适合在生产环境中使用,在生产环境中可以使用 uWSGI + Nginx 来部署程序。
keinYe
2019/12/19
3.6K0
ubuntu上web项目的部署,:uwsgi, uwsgi + nginx, uwsgi+nginx分布式部署
Ubuntu中pip和pip3区别: pip默认给python2用,pip3默认给Python3使用
武军超
2019/02/25
1.1K0
Nginx+uwsgi+Django (
通过/tmp/project.sock 文件,将nginx与uwsgi关联,进行通信
py3study
2020/01/17
5450
linux nginx uwsgi installation
# nginx编译安装 wget http://nginx.org/download/nginx-1.17.7.tar.gz tar -zvxf nginx-1.17.7.tar.gz .configure (很可能要补一堆下面的依赖包) make && make install # nginx配置检查 ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf
vanguard
2020/01/20
1K0
uWSGI简介_uwsgi启动
直接将uwsgi用作服务器(例如Apache和nginx那样)直接暴露在公网那么就使用http;如果有单独的服务器(例如Apache或者nginx),由服务器将请求转发给uwsgi处理,并且使用http协议,那么此时使用http-socket。 而socket配置项又是什么意思呢?首先,按照uwsgi文档给出的解释是:bind to the specified UNIX/TCP socket using default protocol.也就是说指定UNIX/TCP socket作为默认的协议(引)。 UNIX/TCP socket其实是两类socket。UNIX socket是进程间的通信(Inter Process Communication),只能在同一台机器上;TCP/IP sockets允许进程通过网络通信。
全栈程序员站长
2022/10/01
6050
uWSGI简介_uwsgi启动
Nginx+Python+uwsgi+D
2,Python3环境的安装 首先安装依赖包 yum -y groupinstall “Development tools” yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 下载python3的压缩包到/opt/目录下 cd /opt/ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz 然后解压压缩包安装Python3 tar -xJf Python-3.5.2.tar.xz cd Python-3.5.2 ./configure –prefix=/usr/local/python3 make && make install 最后创建软链接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 在命令行中输入python3测试
py3study
2020/01/10
5240
Nginx+Python+uwsgi+D
Nginx+uWSGI+DJango+P
yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool make setuptool
py3study
2020/01/08
5510
Nginx+uWSGI+Django部署
在通过前面的学习,我们对Python web开发框架——Django有了一定认识之后,今天这篇文章芒果给大家介绍一下如何将Django部署到服务器上。
TestOps
2022/04/07
3910
django+uwsgi+nginx部署
  说明:Linux系统内置了python2.7,如果你的Django项目依赖于Python3,请使用pip3 install django安装Python3环境下的Django框架
py3study
2020/01/20
5110
nginx+uwsgi+flask+su
新建一个项目并写一个简单的flask web 服务器app 目录~/Desktop/flask_deploy/manager.py
py3study
2020/01/16
1.2K0
nginx+uwsgi+flask+su
CGI、FastCGI、WSGI、uwsgi、uWSGI
快速通用网管接口,是CGI的升级版本,它致力于减少服务器与CGI程序之间的互动开销,从而使服务器可以同时处理更多的网页请求。
GH
2020/04/09
1.7K0
python部署-Flask+uwsgi+Nginx
flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力。
Se7eN_HOU
2020/04/16
9260

相似问题

Java:生活游戏-与邻居的问题

11

生活的游戏邻居问题。数组索引越界异常

30

康威的生活游戏邻居计数

23

康威的生活游戏,计算邻居

11

生活的游戏C++,检查邻居

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档