so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

理顺shell扩展中的几个超难记忆的东西

res=${x-y};
res=${x:-y};
res=${x+y};
res=${x:+y};
res=${x=y};
res=${x:=y};
res=${x?y};
res=${x:?y};
规律如下:
x代表着“如果x不存在(也就是没被设定);res就取y的值”
x:代表着“如果x不存在或者x为空;res就取y的值”
对于-=?三个符号来说,这个意义都满足上述两天规则;

但对于+来说,可以视为对上述规则的取反,也就是:
x代表着“如果x存在(不管其空或不空);res就取y的值”
x:代表着“如果x存在且不为空;res就取y的值”

可以将-看作是最基本的,=是在其基础上加了一个对x的赋值运算,赋值的时机是当res要取为y时;+是-取反的意义;?相当于把res替换为了stderr。

总体说来,整个表达式的值,也就是res的值,要么为x要么为y,如果为y的话,那么就需要满足上述我给出的x或x:代表的含义。?是个特例,它用stderr取代了res,而且一旦要向stderr输出内容,那么程序就立即中断了,不会再执行后续的代码,也不会对res进行任何的赋值运算了。
对于=,与-的意义完全一致,只不过新加了一个对x的赋值运算,

posted on 2008-12-23 21:20 so true 阅读(274) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航: