set中文是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了set中文是啥意思相关的知识,希望对你有一定的参考价值。
set 意思:
n. [数] 集合;一套;布景;[机] 装置
vt. 树立;点燃;点缀;
vi. (日,月)落沉;凝固;结果
adj. 固定的;规定的;固执的
n. (Set)人名;(瑞典)塞特;(俄)谢特
例句:
1、The salesgirl said she would replace the TV set if we were not satisfied.
女售货员说如果我们对这台电视机不满意,她可以给换一台。
2、I set about reading the book at one go.
我曾试图一口气把这本书看完。
扩展资料
相关词组:
set up v. 建立;装配;开业;竖立
a set of 一套;一组;一副
set out 出发;开始;陈述;陈列
complete set 整套;[计]成套机组;完全集
set in vi. 开始;到来;流行
set forth 陈述,提出;出发;陈列;宣布
set off v. 出发;引起;动身;使爆炸;抵销;分开
set by 把…留开
a complete set of 一整套
form a complete set 配套
set theory 集合论
set on 唆使;开始;攻击
full set 全套,全组
参考技术Aset 1 / set; sɛt/ n
1. [C] ~ (of sth) (类似物品的)一组, 一套, 一副, 一对
*a set of cutlery, golf clubs, hand tools 一套刀叉匙餐具﹑ 高尔夫球杆﹑ 手用工具
2.[CGp] 经常来往﹑ 意气相投的一些人
the literary, racing, golfing set 爱好文学﹑ 赛马﹑ 高尔夫球的一伙人
* the smart set 追求时髦的一批阔人
3.[C]在某学科上能力相当的一批学生
*She's in the top set in maths. 她在数学成绩最好的班上.
4.[C] (mathematics 数) 集; 集合.
5.[C] 收音机; 电视机
*a transistor set 晶体管收音机
6. [sing] ~ (of sth) (某物摆放的)样子; 位置; 角度
*She admired the firm set of his shoulders. 她喜欢他的肩膀很结实.
7.[sing]凝结﹑ 凝固或固定的样子
*You won't get a good set if you put too much water in the jelly. 果冻搀水太多就凝固不好了.
8.[C] (网球赛中的)盘.
9. (also sett) [C](铺路用的)长方形石板.
10.(also sett) [C] 獾洞.
11. [C] (a) (戏剧﹑ 电影等的)布景, 场景
*We need volunteers to help build and paint the set. 我们需要有人自愿帮忙把布景搭起﹑ 画好.
(b) 表演戏剧或拍摄电影(片断)的舞台或场地
*The cast must all be on (the) set by 7 pm. 所有演员必须在下午7时到达拍摄场地.
12.[C]幼苗; 树苗: onion sets 洋葱苗.
13.[C] 固定发型; 做头发
* A shampoo and set costs 8. 洗头﹑ 做头发共8英镑.
14. (idm 习语) .set theory (mathematics 数) 集合论.
PLACING IN POSITION 摆放
1.[Tn.pr, Tn.p]将(某物)放在某处或某位置; 置; 摆放
*She set a tray down on the table. 她把托盘放在桌子上了.
* Her eyes are set very close together. 她的两只眼睛长得距离很近.
2. [Tn.pr] ~ sth to sth将某物移至或放置在接近或接触到另一物
* She set the glass to her lips/her lips to the glass. 她把玻璃杯送到嘴边[用嘴唇触及玻璃杯].
* set pen to paper, ie begin to write 动笔.
3.[Tn, Tn.pr] 设置(戏剧﹑ 小说等)的背景
*The novel is set in pre-war London. 这部小说以战前的伦敦为背景.
CAUSING TO BE IN A PARTICULAR STATE OR TO HAPPEN 使处於某状态或使发生
4.[Tn.pr, Cn.a使(某人[某事物])处於或达到某状态
*The revolution set the country on the road to democracy. 这场革命把国家引上了通往民主的道路.
5.(a) [Cn.g] 使(某人[某事物])开始做某事
* set a pendulum swinging 让摆摆动起来(b) [Cn.t] 使(自己[某人])做某事
*We set them to chop wood/set them to work chopping wood in the garden. 我们让他们在花园里劈木柴.
ADJUSTING OR ARRANGING 调整或安排
6.[Tn, Tn.pr] 调整好(某事物)(使之随时可用或置於某位置)
* set the controls, eg of a machine 调整好控制装置(如机器的)
7.Tn] (a) 拨动(钟或表)的指针至准确时间
* I always set my watch by the time-signal on the radio. 我一向按照收音机的报时信号对表.
(b) 调好(闹钟)(使之按时响闹)
* She set her alarm for 7 o'clock. 她把闹钟调到7点钟.
8.[Tn] 在(桌子)上摆好刀叉等餐具准备开饭; 铺桌子
*Could you set the table for supper? 你铺好桌子准备吃晚饭好吗?
9. [Tn.尤用於被动语态] ~ A in B/~ B with A 将(某物, 尤指宝石)镶嵌到(某物)上
* She had the sapphire set in a gold ring. 她把那枚蓝宝石镶在金戒指上了.
10.[Tn, Tn.pr] 安排﹑ 确定或决定(某事物)
*They haven't set a date for their wedding yet. 他们的婚期还没定下来.
CREATING 创造
11. [Tn] (尤与所示名词连用)建立(某事物)
* Imposing a lenient sentence for such a serious crime sets a dangerous precedent. 对这样严重的罪行轻判就开了个危险的先例.
* I rely on you to set a good example. 我全靠你来树立个好榜样.
12. [Tn, Dn.n, Dn.pr] ~ sth (for oneself/sb) (给自己[某人])提出或规定(任务﹑ 工作﹑ 问题等)来处理﹑ 解决等
* Who will be setting (ie writing the questions in) the French exam? 谁负责出法语试题?
* She's set herself a difficult task/set a difficult task for herself. 她给自己提出一个艰巨的任务.
MAKING OR BECOMING FIRM OR FIXED (使)凝固或固定
13.[I, Tn] (使某物)由软变硬或由液态变成固态
* Some kinds of concrete set more quickly than others. 有些种类的混凝土凝结硬化快, 有的较慢. *
The jelly hasn't set yet. 果冻尚未凝固.
14.[Tn 尤用於被动语态]使(脸或身体某部)呈呆板表情或姿势
*He set his jaw in a determined fashion. 他挺着下巴显得很坚决.
15.[Tn]固定发型; 做头发
*She's having her hair set for the party this evening. 她正在为参加今晚的聚会做头发.
16.[Tn] 将(断骨)接好或复位
*The surgeon set her broken arm. 外科医生为她接好断臂.
PRESENTING IN THE RIGHT FORM 以适当的形式表现
17.[Tn] 选用某字体为(书等)排版
*This dictionary is set in Press Roman. 本词典的英文排版用的是Press Roman字体.
18. [Tn, Tn.pr] ~ sth (to sth)为(词句﹑ 诗等)谱曲, 配乐
* Schubert set many of Goethe's poems (to music). 舒伯特为歌德的许多诗谱了曲.
MOVING OR FLOWING 移动或流动
19. [I] 指日﹑ 月或星)落到地平线以下
*In Britain the sun sets much later in summer than in winter. 在英国, 夏季日落时间比冬季晚得多.
* We sat and watched the sun setting. 我们坐在那里看日落.
20.[Ipr, Ip] (指潮水﹑ 潮流等)流动
* The current sets in towards the shore. 潮水向岸边涌来.
* (fig 比喻) The tide of public opinion has set in his favour. 舆论的倾向是支持他的.
* (fig 比喻) Opinion seems to be setting against the proposal. 人们似乎不赞成这个建议.
21. (idm 习语) be all `set (for sth/to do sth); be set for sth/to do sth准备好某事[做某事]
*Are we all set? 我们都准备好了吗?
* We were all set to go when the telephone rang. 我们都准备好要走时电话铃响了.
22.(phr v) set about sb (infml 口) 攻击或抨击某人
* He set about the intruders with a stick. 他用棍子打那些私闯进来的人.
set about sth/doing sth (不用於被动语态) 开始(某工作); 着手做某事
*I must set about my packing. 我得开始收拾行李了.*
I don't know how to set about this job. 这工作我不知如何入手.
set sb against sb (不用於被动语态) 使某人反对或敌视(朋友﹑
亲戚等)
* The civil war set brother against brother. 因内战引起兄弟反颜.
set sth (off) against sth 视(某好的事物)可抵消或抵偿(某坏的事物)
* You must set the initial cost of a new car against the saving you'll make on repairs. 你得想到买新汽车先花这一笔钱可省下日後修车的费用.
set sb/sth apart (from sb/sth)使某人[某事物]与众不同或优於其他的
* Her clear and elegant prose sets her apart from most other journalists. 她的散文凝练高雅, 多数新闻工作者无出其右.
set sth aside (a) 将某事物放在一边
*She set aside her book and lit a cigarette. 她把书放在一旁, 点了一支香烟.
(b) (为某目的)节省或保留(钱或时间)
* She sets aside a bit of money every month. 她每月都存一点儿钱.
(c) 不理会或不顾某事物; 放弃或回绝某事物
*Let's set aside my personal feelings. 不必顾及我个人的感情.
(d) (law 律) 撤消或驳回(某裁决﹑ 判决等)
* The judge's decision was set aside by the Appeal Court. 法官的判决被上诉法庭驳回.
set sth back (sth) 耽搁或阻碍某事物的进展(之时间)
* Work on the new theatre has been set back three months. 兴建新剧院的工作误了三个月.
set sb back sth ( 口) 使某人花费(某数量的钱)
* The meal is likely to set us back 15 each. 这顿饭我们可能每人要花15英镑.
set sth back (from sth) ( 常用於被动语态) 将某物(尤指建筑物)置於距另一物一定距离处
*The house is set well back from the road. 这所房子与公路很有一段距离.
set sb down (指车辆或司机)停下来让(乘客)下车
*The bus stopped to set down an old lady. 公共汽车停下来让一个老太太下车.
set sth down 将某事物记在纸上; 写下来
* Why don't you set your ideas down on paper? 你怎麽不把你的想法写在纸上呢?
set `forth (fml 文) 起程; 出发; 动身
set sth forth (fml 文) 公布某事物; 宣布或提出某事物
*The Prime Minister set forth the aims of his government in a television broadcast. 首相在电视广播中公布了内阁的工作目标.
set `in (指雨﹑ 坏天气﹑ 传染等)开始并可能继续下去
* I must get those bulbs planted before the cold weather sets in. 我得在天气转冷之前把这些球茎秧种上.
set `off 开始(旅行﹑ 赛跑等)
* What time are you planning to set off tomorrow? 你打算明天几点钟启程?
set sth off (a) 使(炸弹﹑ 地雷等)爆炸
* Do be careful with those fireworks; the slightest spark could set them off. 这些烟火要格外小心, 稍有火星就能引起爆炸.
(b) 引起或激发某事物
*Panic on the stock market set off a wave of selling. 股票市场上人心惶惶, 掀起抛售浪潮.
(c) (通过对比)使某事物更有吸引力
* That jumper sets off the blue of her eyes. 在这件毛衣衬托下, 她眼睛的蓝色显得更漂亮了.set sb off (doing sth) 使某人开始做(某事物)
* Her imitations always set me off (laughing). 她模仿别人的动作, 每次都把我逗得哈哈大笑.
set on sb 攻击某人
* I was set on by their dog as soon as I opened the gate. 我刚一开大门, 他们的狗就朝我扑来.
set sb/sth on sb 使(人或动物)攻击某人
*The farmer threatened to set his dogs on us. 那个农场主威胁着要让狗咬我们.
set `out从某地出发上路
*She set out at dawn. 她天一亮就动身了.
set sth out (a) 安排或摆放(物件)
* We'll need to set out chairs for the meeting. 我们要为会议摆好椅子.
(b) 陈述或宣布某事
*He set out his objections to the scheme. 他说他反对这项计画.
set out to do sth(带着某目的)开始做某事
* They succeeded in what they set out to do. 他们打算做的事已经做成了.
set `to (a)精力充沛地开始做某事
* The engineers set to on repair work to the bridge. 工程师奋力进行修桥工作.
(b) 开始打斗或争吵
*The boys set to and had to be separated by a teacher. 那些男生大打出手, 来个老师才把他们拉开.
set sb up (infml 口) (a) 使某人更健康﹑ 强壮﹑ 活跃等
* A hot drink will soon set you up. 你喝杯热饮料马上就精神了.
* A week in the country will set her up nicely after her operation. 她手术後在郊外住上一个星期一定能复原.
(b) 使某人有钱创业﹑ 买房子等
*Her father set her up in business. 她父亲出钱帮她创业.
* His father set him up as a bookseller. 他父亲资助他做了书商.
set sth up (a) 摆放或竖起某物
set up a memorial, monument, statue, etc 竖起纪念物﹑ 纪念碑﹑ 塑像等
* Police set up road-blocks on routes leading out of the city. 警方在通往城外的路上设置了路障.(b) 使(器械﹑ 机器等)准备使用
* How long will it take to set up the projector? 把这个放映机安放好需要多长时间?
(c) 建立或开创某事物
* A fund will be set up for the dead men's families. 抚恤死难工人家属的基金会即将建立起来.
(d) 创(体育)记录
*She set up a new world record time in the 100 metres. 她创下了新的百米世界记录.
(e) 造成或产生某事物
* The slump on Wall Street set up a chain reaction in stock markets around the world.
华尔街金融滑坡引起世界股票市场的连锁反应.
(f) 开始发出(很大的噪声)
*set up a commotion, din, row, etc 发出骚乱声﹑ 嘈杂声﹑ 争吵声等
set (oneself) up as sb ) 当上(店主﹑ 手艺人等)
*He moved to Leeds and set up as a printer. 他搬到利兹干起了印刷业.
set oneself up as sb 将自己视为或称作(某种人)
* He likes to set himself up as an intellectual. 他喜欢自命为知识分子.
# `set-back n 妨碍发展的事物
* Defeat in the by-election is a major set-back to the ruling party. 执政党在补缺选举中落选, 是一极大挫折.
set `book (also ,set `text) 必修课本
* What are your set books for English A Level? 你们参加高级程度英语考试要读哪些必修课本?
,set-`to n (pl set-tos) 打斗; 争吵
*They had the most frightful set-to. 他们大打出手, 从来没有这麽厉害.
`set-up n ( 通常作单数) (infml 口) 组织的结构
* What's the set-up (like) in your company?
你们公司的机构是怎样的?
set 3 / set; / adj
1.[通常作表语] 处於某位置*
She has deep-set eyes. 她的眼窝很深.
2.[ 通常作定语](指人的表情)凝滞的, 呆板的
* a set (ie insincere) smile 假笑.
3.[通常作定语] 固定的; 事先安排的
* The meals in this hotel are at set times. 这家旅馆的用餐时间是固定的.
4. 固定不变的
5. [作定语] 故意的; 具体的
*We've come here for a set purpose. 我们来到这里是有目的的.
6.(idm 习语) be (dead) `set against sth/doing sth (坚决)反对某事
* The government are set against (the idea of) raising taxes. 内阁坚决反对增加税收(的意见).
be set on sth/doing sth 决定做某事
* He's set on going to university. 他决心要上大学.
* She's absolutely set on publishing as a career. 她决意从事出版事业.
# ,set `piece
(小说﹑ 电影﹑ 戏剧等中)以固定模式或风格安排的场景
*The play contains a number of typical Stoppard set pieces. 这出戏里有若干典型的斯托帕特式的场景.
参考技术B英 [set] 美[set]
意思很多,一般为“设置”的意思。
v.
放置;设定;确定;规定;调整;分配;(太阳)落下去;将(宝石)镶嵌到(某物);配乐
He set aside the book and lit a cigarette.
他把书放置在一边,点燃了香烟。
How do we set the enrollment criteria?
我们如何设定录取标准?
We have set the date for the wedding.
我们已经确定了婚期。
We set a limit on the expenses of the trip.
我们规定了这次旅游的费用。
These instruments have been finely set.
这些仪器是经过精密调整的。
n.集合;组合;日落;一套;一副;一局比赛;舞台;姿态;头发的定型
-It may be a very simple or complicated set of instructions.
这个指令的集合可能非常简单,也可能十分复杂。
The set of types is the combined set from the two properties.
该类型集是两个属性的组合集。
The sun has rise and set.
太阳总要有日出日落的。
I received a set of gardening tools on my birthday.
生日那天,我收到一套园艺工具。
She has a set of false teeth.
她有一副假牙。
adj.规定的;固定的;不变的;做好准备的;固执的;不自然的
Please follow the set procedures when you use this product.
使用该产品时请遵循规定的步骤。
There is no set time limit on this.
这个没有固定的时间限制。
固定搭配
用作动词 (v.) ~+名词 set a broken leg 接合断腿
set a date 定日期
set a match 点火
~+副词
set in 流行,确立,走进
set in one's attitude about 抱定自己对…的态度
set off 动身,出发,引起,爆炸
set on 唆使
set out 动身,布置,提出,开辟
~+介词
set about 开始,着手,乱打(人)
set about cleaning the classroom 开始打扫教室
set about learning English 开始学习英语
set above 将…置于…之上
用作名词 (n.)
动词+~
accumulate set 积累成批
acquire set 获得一套
break (up) a set 拆散一套
classify in set 按系列分类
collect set 采集种子
compile set 编纂成套
complete set 使成一套
compose set 构成一付
consort in set 配成套
constitute set 组成一套
create set 制成一套
cut set 裁成一套
dispose of set 处理掉一系列…
dissolve set 拆散团体
名词+~
bedroom set 一套卧室家具
bicycling set 一伙喜欢骑自行车的人
brawling set 一伙喧嚷的人
carpentry set 一批木器
chemistry set 一套化学用具
chess set 一副国际象棋
command set (装在飞机上的)指挥无线电台
desk set 一套办公用具
dinner set 一套餐具
dresser set 梳妆用具
gambling set 一群赌徒
golfing set 爱好高尔夫球的一伙人
hard-drinking set 一伙酒徒
high-school set 一群中学生
literary set 爱好文学的一伙人
onion set 洋葱块茎
racing set 爱好赛马的一伙人
radar set 雷达装置
radio set 收音机
~+介词
a set of 一副,一套,一群
用作形容词 (adj.)
~+名词
set battle 对阵战
set form 固定的格式
~+介词
set in one's way 一成不变
n. [数] 集合;一套;布景;[机] 装置
vt. 树立;点燃;点缀;
vi. (日,月)落沉;凝固;结果
adj. 固定的;规定的;固执的
n. (Set)人名;(瑞典)塞特;(俄)谢特
词汇分析
音标:英 [set] 美 [sɛt]
短语
set forth 阐明 ; 动身起程 ; 陈述 ; 说明
set in 开始 ; 开端 ; 来临 ; 到来
fuzzy set [数] 模糊集 ; 模糊集合 ; 乏晰集合 ; 模糊判断
set screw 止付螺丝 ; 定位螺丝 ; 紧定螺钉 ; 固定螺钉
index set 指标集 ; [计] 索引集 ; 翻译
例句
1、This one completes the set.
加上这一件就凑成全套了。
2、He set us an example of plain living.
他为我们树立了简朴生活的榜样。
3、Compare this new TV set with the old one, you will see which is better.
将这台新电视机与旧电视机一比,你就会看出哪一台更好一些。
4、This theatre is set up for children.
这座剧院是为儿童设置的。
5、The concrete will set after a certain time.
过一段时间之后,混凝土就会硬化。 参考技术D 它一般狗命会跟介词构成词组,以词组形式出现,如set out 出发 ;set up 建立
bash 脚本中的 set -e 是啥意思?
【中文标题】bash 脚本中的 set -e 是啥意思?【英文标题】:What does set -e mean in a bash script?bash 脚本中的 set -e 是什么意思? 【发布时间】:2013-11-06 11:33:38 【问题描述】:我正在研究这个 preinst 文件的内容,该文件在该软件包从其 Debian 归档 (.deb) 文件中解压缩之前执行。
脚本代码如下:
#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
if [ -d /usr/share/MyApplicationName ]; then
echo "MyApplicationName is just installed"
return 1
fi
rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section
我的第一个问题是关于这条线的:
set -e
我认为脚本的其余部分非常简单:它检查 Debian/Ubuntu 包管理器是否正在执行安装操作。如果是,它会检查我的应用程序是否刚刚安装在系统上。如果有,脚本会打印消息 “MyApplicationName is just installed” 并结束(return 1
表示以“错误”结束,不是吗?)。
如果用户要求 Debian/Ubuntu 包系统安装我的包,脚本也会删除两个目录。
这是对的还是我错过了什么?
【问题讨论】:
set -e 在 google 中找不到此内容的原因: -e 在您的查询中被解释为否定。尝试以下查询:bash set "-e" @twalberg 当我问自己同样的问题时,我正在查看man set
如果您正在寻找如何关闭它,请将破折号换成加号前缀:set +e
@twalberg 但是询问真人比仅仅向机器人发出请求要有趣得多;-)。
【参考方案1】:
来自help set
:
-e Exit immediately if a command exits with a non-zero status.
但某些人(bash 常见问题解答和 irc freenode #bash 常见问题解答作者)认为这是不好的做法。推荐使用:
trap 'do_something' ERR
发生错误时运行do_something
函数。
见http://mywiki.wooledge.org/BashFAQ/105
【讨论】:
如果我想要与“如果命令以非零状态退出则立即退出”相同的语义,do_something 会是什么?ERR
陷阱不被 shell 函数继承,所以如果你有函数,set -o errtrace
或 set -E
将允许你只设置一次陷阱并全局应用它。
trap 'exit' ERR
与set -e
有什么不同的?
如果这是不好的做法,那么为什么要在 Debian packages 中使用它?
这不是普遍认为是不好的做法。与许多不受欢迎的语言结构一样,它也有它的位置。它的主要问题是边缘情况下的行为有点不直观。【参考方案2】:
set -e
如果命令或管道出现错误,则停止执行脚本 - 这与默认的 shell 行为相反,即忽略脚本中的错误。在终端中输入 help set
以查看此内置命令的文档。
【讨论】:
只有在管道中的 last 命令出现错误时才会停止执行。有一个 Bash 特定选项set -o pipefail
可用于传播错误,因此如果前面的命令之一以非零状态退出,则管道命令的返回值非零。
请记住,-o pipefail
仅表示管道的第一个非零(即 -o errexit
术语中的错误)命令的 退出状态 被传播到结束。管道中的其余命令仍在运行,即使使用set -o errexit
。例如:echo success | cat - <(echo piping); echo continues
,其中echo success
表示成功但可能出错的命令,将打印success
、piping
和continues
,但false | cat - <(echo piping); echo continues
,false
表示命令现在静默错误,退出前仍会打印piping
。【参考方案3】:
我在试图弄清楚由于set -e
而中止的脚本的退出状态是什么时发现了这篇文章。答案对我来说并不明显。因此这个答案。基本上,set -e
中止执行命令(例如 shell 脚本)并返回失败命令的退出状态代码(即内部脚本,而不是外部脚本)。
例如,假设我有shell脚本outer-test.sh
:
#!/bin/sh
set -e
./inner-test.sh
exit 62;
inner-test.sh
的代码是:
#!/bin/sh
exit 26;
当我从命令行运行outer-script.sh
时,我的外部脚本以内部脚本的退出代码终止:
$ ./outer-test.sh
$ echo $?
26
【讨论】:
【参考方案4】:根据bash - The Set Builtin 手册,如果设置了-e
/errexit
,如果由单个simple command、a list 或a compound command 组成的pipeline 返回非零值,则shell 将立即退出状态。
默认情况下,管道的退出状态是管道中最后一条命令的退出状态,除非启用了pipefail
选项(默认禁用)。
如果是这样,管道的最后一个(最右边)命令的返回状态以非零状态退出,如果所有命令成功退出,则返回零。
如果您想在退出时执行某些操作,请尝试定义trap
,例如:
trap onexit EXIT
onexit
是您在退出时执行某些操作的函数,如下所示,它打印简单的 stack trace:
onexit() while caller $((n++)); do :; done;
有一个类似的选项 -E
/errtrace
会捕获 ERR,例如:
trap onerr ERR
示例
零状态示例:
$ true; echo $?
0
非零状态示例:
$ false; echo $?
1
否定状态示例:
$ ! false; echo $?
0
$ false || true; echo $?
0
在 pipefail
被禁用的情况下进行测试:
$ bash -c 'set +o pipefail -e; true | true | true; echo success'; echo $?
success
0
$ bash -c 'set +o pipefail -e; false | false | true; echo success'; echo $?
success
0
$ bash -c 'set +o pipefail -e; true | true | false; echo success'; echo $?
1
在启用pipefail
的情况下进行测试:
$ bash -c 'set -o pipefail -e; true | false | true; echo success'; echo $?
1
【讨论】:
【参考方案5】:这是一个老问题,但这里的答案都没有讨论在 Debian 包处理脚本中使用 set -e
aka set -o errexit
。根据 Debian 政策,在这些脚本中使用此选项是强制;其目的显然是为了避免任何未处理的错误情况的可能性。
这在实践中意味着您必须了解在什么条件下运行的命令可能会返回错误,并明确处理每个错误。
常见的陷阱是diff
(有差异时返回错误)和grep
(没有匹配时返回错误)。您可以通过显式处理来避免错误:
diff this that ||
echo "$0: there was a difference" >&2
grep cat food ||
echo "$0: no cat in the food" >&2
(请注意我们如何注意在消息中包含当前脚本的名称,并将诊断消息写入标准错误而不是标准输出。)
如果没有显式处理确实是必要或有用的,则什么也不做:
diff this that || true
grep cat food || :
(shell 的:
no-op 命令的使用有点晦涩,但相当常见。)
重申一下,
something || other
是简写
if something; then
: nothing
else
other
fi
即当且仅当something
失败时,我们明确地说应该运行other
。普通的if
(以及其他shell 流控制语句,如while
、until
)也是处理错误的有效方法(事实上,如果不是这样,带有set -e
的shell 脚本永远不会包含流控制声明!)
另外,明确地说,在没有这样的处理程序的情况下,set -e
将导致整个脚本立即失败并出现错误,如果diff
发现差异,或者如果grep
没有找到匹配项。
另一方面,某些命令不会在您希望的时候产生错误退出状态。常见的有问题的命令是find
(退出状态不反映是否实际找到文件)和sed
(退出状态不会显示脚本是否收到任何输入或实际成功执行任何命令)。在某些情况下,一个简单的保护措施是通过管道传递给一个在没有输出时会发出尖叫的命令:
find things | grep .
sed -e 's/o/me/' stuff | grep ^
需要注意的是,管道的退出状态是该管道中最后一个命令的退出状态。所以上面的命令实际上完全掩盖了find
和sed
的状态,只告诉你grep
最后是否成功了。
(当然,Bash 有 set -o pipefail
;但 Debian 软件包脚本不能使用 Bash 功能。政策坚决要求这些脚本使用 POSIX sh
,尽管并非总是如此。)
在许多情况下,在进行防御性编码时需要单独注意这一点。有时你必须例如浏览一个临时文件,这样您就可以看到产生该输出的命令是否成功完成,即使习惯用法和方便会指示您使用 shell 管道。
【讨论】:
这是一个很好的答案。它促进了最佳实践。我在 GREP 命令中遇到了完全相同的问题,我真的不想删除 'set -e'【参考方案6】:我认为其目的是让相关脚本快速失败。
要自己测试,只需在 bash 提示符下键入 set -e
。现在,尝试运行ls
。你会得到一个目录列表。现在,输入lsd
。该命令无法识别并返回错误代码,因此您的 bash 提示符将关闭(由于 set -e
)。
现在,要在“脚本”的上下文中理解这一点,请使用这个简单的脚本:
#!/bin/bash
# set -e
lsd
ls
如果按原样运行,您将从最后一行的ls
获得目录列表。如果您取消注释 set -e
并再次运行,您将不会看到目录列表,因为 bash 一旦遇到来自 lsd
的错误就会停止处理。
【讨论】:
此答案是否添加了其他人尚未就该问题提供的任何见解或信息? 我认为它对其他答案中不存在的功能提供了清晰、简洁的解释。没有什么额外的,只是比其他回复更专注。 @CharlesDuffy 我认为确实如此。这比仅仅说“查看手册页”有用得多 另一个答案不只是说“查看手册页”——它会提取手册页中相关且重要的特定部分。正是由于没有具体说明(以及要求读者自己进行研究),才使得“查看手册页”没有帮助。 我也认为这个答案很有帮助@CharlesDuffy【参考方案7】:Script 1: without setting -e
#!/bin/bash
decho "hi"
echo "hello"
This will throw error in decho and program continuous to next line
Script 2: With setting -e
#!/bin/bash
set -e
decho "hi"
echo "hello"
# Up to decho "hi" shell will process and program exit, it will not proceed further
【讨论】:
【参考方案8】:set -e set -e 选项指示 bash 在任何命令 [1] 具有非零退出状态时立即退出 .你不想为你的命令行 shell 设置它,但在脚本中它非常有用。在所有广泛使用的通用编程语言中,未处理的运行时错误——无论是 Java 中抛出的异常、C 中的分段错误,还是 Python 中的语法错误——都会立即停止程序的执行;后续行不执行。
默认情况下,bash 不这样做。如果您在命令行上使用 bash,则此默认行为正是您想要的 您不想因为输入错误而退出!但在脚本中,您确实想要相反的结果。 如果脚本中的一行失败,但最后一行成功,则整个脚本都有一个成功的退出代码。这样很容易漏掉错误。 同样,当您使用 bash 作为命令行 shell 并在脚本中使用它时,您想要的结果在这里不一致。在脚本中不容忍错误要好得多,这就是 set -e 给你的。复制自:https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425
这可能会对你有所帮助。
【讨论】:
“如果你在命令行上使用 bash,这个默认行为正是你想要的”——更清楚一点:如果你在运行 bash 命令时使用set -e
,一个简单的错字可能会导致你bash 会话立即退出。尝试运行一个新的终端,set -e
,然后是lsd
。再见,终点站。【参考方案9】:
cat a.sh
#! /bin/bash
#going forward report subshell or command exit value if errors
#set -e
(cat b.txt)
echo "hi"
./a.sh; echo $?
cat: b.txt: No such file or directory
hi
0
使用 set -e 注释掉,我们看到 echo "hi" 退出状态被报告并且 hi 被打印出来。
cat a.sh
#! /bin/bash
#going forward report subshell or command exit value if errors
set -e
(cat b.txt)
echo "hi"
./a.sh; echo $?
cat: b.txt: No such file or directory
1
现在我们看到报告了 b.txt 错误,并且没有打印任何 hi。
因此,shell 脚本的默认行为是忽略命令错误并继续处理并报告最后一个命令的退出状态。如果您想在错误时退出并报告其状态,我们可以使用 -e 选项。
【讨论】:
以上是关于set中文是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
斯威夫特:这个错误:'private(set)'修饰符不能应用于只读属性是啥意思?
java web目录文件中.setting这个文件夹是啥意思