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

          主站蜘蛛池模板: 辽源市| 郯城县| 福海县| 和林格尔县| 蒙城县| 武隆县| 阿克| 宝应县| 金沙县| 甘泉县| 太保市| 卓资县| 苍山县| 齐河县| 于都县| 渑池县| 象山县| 靖宇县| 芮城县| 阿拉尔市| 甘德县| 荔波县| 衡南县| 阜宁县| 迁西县| 江孜县| 铜陵市| 金华市| 香格里拉县| 保亭| 六枝特区| 同江市| 长武县| 清徐县| 阳山县| 横山县| 精河县| 天镇县| 苏尼特左旗| 呈贡县| 玛曲县|