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 閱讀(280) 評論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 凤城市| 金沙县| 三门县| 天台县| 东乌| 承德县| 进贤县| 自治县| 横山县| 精河县| 拉孜县| 永顺县| 泰安市| 富民县| 安阳市| 浦江县| 稷山县| 会同县| 吉木萨尔县| 和林格尔县| 延川县| 莱西市| 田东县| 本溪| 海盐县| 江永县| 保山市| 新闻| 苏尼特右旗| 盐边县| 岑溪市| 策勒县| 灵台县| 灌云县| 黄浦区| 兴安盟| 无极县| 马龙县| 义马市| 漠河县| 奇台县|