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

          主站蜘蛛池模板: 当雄县| 荃湾区| 合肥市| 和田县| 襄城县| 大荔县| 扎鲁特旗| 安阳县| 巴马| 曲周县| 连江县| 潮安县| 志丹县| 泽普县| 宁陕县| 革吉县| 陇川县| 远安县| 江都市| 酉阳| 南雄市| 中方县| 河南省| 宁城县| 安岳县| 九江县| 奎屯市| 隆回县| 大兴区| 深水埗区| 阳江市| 兴化市| 宜州市| 竹北市| 金乡县| 凉山| 石家庄市| 泰安市| 铅山县| 惠来县| 巴中市|