<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1536207310096707015</id><updated>2024-09-05T08:19:38.061-07:00</updated><category term="c/c++"/><category term="Regular Expression"/><category term="個人成長"/><category term="經營管理"/><category term="JAVA"/><category term="UI設計"/><category term="shell script po文測試標籤"/><title type='text'>生活紀錄</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-8973570428041391172</id><published>2016-01-12T23:44:00.001-08:00</published><updated>2016-01-12T23:45:56.808-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JAVA"/><title type='text'>static vs final on variables &amp; object</title><content type='html'>//: reusing/FinalData.java&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
// The effect of final on fields.&lt;br /&gt;
import java.util.*;&lt;br /&gt;
import static net.mindview.util.Print.*;&lt;br /&gt;
&lt;br /&gt;
class Value {&lt;br /&gt;
&amp;nbsp; int i; // Package access&lt;br /&gt;
&amp;nbsp; public Value(int i) { this.i = i; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class FinalData {&lt;br /&gt;
&amp;nbsp; private static Random rand = new Random(47);&lt;br /&gt;
&amp;nbsp; private String id;&lt;br /&gt;
&amp;nbsp; public FinalData(String id) { this.id = id; }&lt;br /&gt;
&amp;nbsp; // Can be compile-time constants:&lt;br /&gt;
&amp;nbsp; private final int value1 = 9;&lt;br /&gt;
&amp;nbsp; private static int value2 = 19;&lt;br /&gt;
&amp;nbsp; private int value3 = 29;&lt;br /&gt;
&amp;nbsp; private static final int VALUE4 = 99;&lt;br /&gt;
&amp;nbsp; // Typical public constant:&lt;br /&gt;
&amp;nbsp; public static final int VALUE5 = 39;&lt;br /&gt;
&amp;nbsp; // Cannot be compile-time constants:&lt;br /&gt;
&amp;nbsp; private final int i4 = rand.nextInt(20);&lt;br /&gt;
&amp;nbsp; static final int INT_5 = rand.nextInt(20);&lt;br /&gt;
&amp;nbsp; private Value v1 = new Value(11);&lt;br /&gt;
&amp;nbsp; private final Value v2 = new Value(22);&lt;br /&gt;
&amp;nbsp; private static final Value VAL_3 = new Value(33);&lt;br /&gt;
&amp;nbsp; // Arrays:&lt;br /&gt;
&amp;nbsp; private final int[] a = { 1, 2, 3, 4, 5, 6 };&lt;br /&gt;
&amp;nbsp; public String toString() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return id + &quot;: &quot; + &quot;i4 = &quot; + i4 + &quot;, INT_5 = &quot; + INT_5 + &quot; value1 = &quot; + value1 + &quot; value2 = &quot; + value2 + &quot; value3 = &quot; + value3 + &quot; VALUE4 = &quot; + VALUE4 + &quot; VALUE5 = &quot; + VALUE5;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FinalData fd1 = new FinalData(&quot;fd1&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //fd1.value1++; // Error: can&#39;t change value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fd1.value2++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fd1.value3++; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fd1.v2.i++; // Object isn&#39;t constant!&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fd1.v1 = new Value(9); // OK -- not final&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; fd1.a.length; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fd1.a[i]++; // Object isn&#39;t constant!&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //! fd1.v2 = new Value(0); // Error: Can&#39;t&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //! fd1.VAL_3 = new Value(1); // change reference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //! fd1.a = new int[3];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(fd1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(&quot;Creating new FinalData&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FinalData fd2 = new FinalData(&quot;fd2&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(fd1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(fd2);&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
} /* Output:&lt;br /&gt;
fd1: i4 = 15, INT_5 = 18 value1 = 9 value2 = 20 value3 = 30 VALUE4 = 99 VALUE5 = 39&lt;br /&gt;
Creating new FinalData&lt;br /&gt;
fd1: i4 = 15, INT_5 = 18 value1 = 9 value2 = 20 value3 = 30 VALUE4 = 99 VALUE5 = 39&lt;br /&gt;
fd2: i4 = 13, INT_5 = 18 value1 = 9 value2 = 20 value3 = 29 VALUE4 = 99 VALUE5 = 39&lt;br /&gt;
*///:~&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/8973570428041391172/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2016/01/static-final-on-variables-object.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/8973570428041391172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/8973570428041391172'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2016/01/static-final-on-variables-object.html' title='static vs final on variables &amp; object'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-7349708601060243239</id><published>2015-12-30T21:24:00.001-08:00</published><updated>2015-12-30T21:53:42.378-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UI設計"/><title type='text'></title><content type='html'>&lt;div class=&quot;span12&quot;&gt;
&lt;div id=&quot;main-col&quot;&gt;
&lt;br /&gt;
&lt;section class=&quot;single-wrapper&quot;&gt;
                    
                    

                        &lt;div class=&quot;post-180781 post type-post status-publish format-standard hentry category-slider category-general tag-software_uiux entry-box clearfix&quot;&gt;
&lt;br /&gt;
&lt;header class=&quot;entry-header&quot;&gt;
                            &lt;h2 class=&quot;entry-title&quot;&gt;
最強 UI 設計守則：遵守以下 75 點，讓你擁有完美界面設計&lt;/h2&gt;
&lt;div class=&quot;sharebox &quot; data-pid=&quot;180781-540&quot;&gt;
&lt;div class=&quot;total&quot;&gt;
&lt;span class=&quot;share-count-arrow&quot;&gt;&lt;/span&gt;&lt;span class=&quot;share-count&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/header&gt;


        &lt;section class=&quot;single-post-header&quot;&gt;
&lt;div class=&quot;author&quot;&gt;
&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;image aligncenter&quot; src=&quot;http://e.36krcnd.com/nil_class/dbb736e7-64c4-4b9a-80b6-f782f86298d0/1408021059066_5z48e9___.jpg%21heading&quot; /&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section class=&quot;article&quot;&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
一個好的界面設計應該擁有高轉化率且方便用戶使用，換句話說：既能達到商業目的又能滿足方便易用的要求。有一個設計諮詢公司根據自己的客戶案例，總結了 75 個經過實踐證明的原則：&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
（這個網站會不斷的更新添加新規則，建議收藏。）&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;1. 使用單欄佈局代替多欄佈局&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
單欄佈局能夠讓用戶對全局有更好的掌控，對內容一目了然。而多欄佈局可能會分散用戶注意力。最好的做法是用一個有邏輯的敘述來引導用戶並在末尾放上你的行動按鈕。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506793856005.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506793856005.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;2. 使用禮品誘惑代替生硬的推銷&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
例如可以給用戶提供禮物來表達你的友善姿態。更深層的講，送禮是一種基於互惠原則的有效說服策略。顯而易見的好處是讓你在往後的活動進展中更加順利。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506805081658.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506805081658.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;3. 合併重複的功能避免分散&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
隨著時間的推移，不可避免的你增加了很多模塊、元素，而且功能相同。碎片化的界面會增加用戶的學習曲線，所以需要合併重複的功能，重構你的界面。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506809310390.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506809310390.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;4. 用戶的評價好過自賣自誇&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
用戶好評是另一個可以提高轉化率的說服策略。當潛在客戶看到其他人對你的服務給予好評時，項目機會會大增。所以試著提供一些含金量高的證據證明這些好評是真實可信的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506874633087.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506874633087.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;5. 重複你的主行動按鈕&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
多次重複主行動按鈕的方法適用於界面很長或者分頁的情況。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506877029321.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506877029321.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;6. 區分開可點擊和已選擇的樣式&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
視覺風格，如顏色、深度和對比度都可以當做可靠的線索以幫助人們了解你的導航界面：我在哪裡、我能去哪裡。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
為了讓用戶清晰，可點擊元素（鏈接，按鈕）、已選擇元素（選擇的菜單）、以及純文本的樣式應該是彼此明顯不同，而且在界面上要保持一致性原則。在視覺上，我們一般認為藍色表示可被點擊，黑色表示已被選擇或是什麼。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506884372232.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506884372232.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;7. 給出推薦而不是讓用戶來選擇&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當列出許多選項時，給出一個重點推薦項是個不錯的做法，儘管推薦的設置無法滿足所有用戶，但這麼做是有理論依據的：當面臨的選擇越多時，用戶就越難做出決定（決策癱瘓）。所以你可以高亮某個選項來幫助用戶做出選擇。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506886672940.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506886672940.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;8. 使用恢復功能代替彈出對話框&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
假設你剛點擊了一個鏈接或者按鈕，撤銷操作可以讓操作流暢自然，也更符合人類的本能。而每次操作都彈一個確定框則好像是在質問用戶你明白不明白這個操作會產生什麼後果。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
其實只有極少數情況下才會發生誤操作。所以，為了防止誤操作而設計的確認窗口其實是不人性化的，用戶每次操作都需要進行毫無意義的確定。所以請考慮在你的產品裡實現撤銷操作來提升用戶的操作友好度吧。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506887815483.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506887815483.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;9. 明確產品適用人群而不是面向所有人&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
你是想把產品做成大眾化的還是有精確的適用人群呢？答案是：在產品定位上你需要更精確些。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
把產品定位得精確的風險就是可能縮小了目標潛在用戶的範圍，但這種更專業的精神卻反過來會贏得信任、權威。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506894997776.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506894997776.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;10. 直接果斷而不是猶猶豫豫&lt;/li&gt;
&lt;/ul&gt;
你可以通過不確定而顫抖的聲音來表達傳遞自己的意思，也可以通過很自信的方式表達。如果你在界面中的表述多以問號結束，比如「也許」、「可能」、
「感興趣？」或者「想要試試麼？」，那麼你完全可以把語氣變得更堅定一些。不過萬事無絕對，適當放鬆措詞讓用戶有自行思考的餘地也是可以的。&lt;br /&gt;

&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506897507758.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506897507758.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;11. 界面要對比鮮明讓人容易區分&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
把主要功能區從界面中突出顯示出來效果會好很多，使你的主要口號醒目有很多種方法：通過明暗色調的對比來突顯、通過
為元素添加陰影、漸變等效果讓界面富有層次感來張顯主題。最後，你甚至可以在色相環上專門選擇互補色（比如黃色與紫色）來設計你的界面，以達到突出重心的
目的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
綜合所有這些，最後得到的界面會使你的主要意圖與界面其他元素有明顯的區分，得到完美的呈現。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506901276507.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506901276507.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;12. 個性鮮明勝過普通&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
介紹你自己或產品時附帶上名稱、圖片或原產地可以讓與用戶的交流溝通更加的個人化，當你在界面設計中實現這點時，讓人覺得非常友好。同時指明區域也會隱形提高產品的聲譽，好上加好。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506909312181.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506909312181.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;13. 精簡表單填寫內​​容&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
人本性懶惰，沒人願意填寫一大堆表單字段。表單中每個字段都會有失去用戶的風險。多想想是不是每個字段都是必須的。如果你確實需要一大堆信息讓用戶填寫，試著將它們分散在不同頁面，在表單提交後還可以繼續補充。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506910229788.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506910229788.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;14. 暴露選項而不是隱藏&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
你使用的任何一個下拉框都會對用戶造成信息的隱藏，需要額外的操作才能顯示。如果這些信息是貫穿整個操作所必需的，那你最好把它展示出來做得更顯而易見一點。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
下拉框最好用在選擇日期，省份等約定俗成的地方；對於程式中重要的選項最好還是不要做成下拉形式。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506912585695.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506912585695.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;15. 把界面做得環環相扣要好過直白的排版&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
一個平淡無奇行文無疑會讓用戶失去興趣而放棄繼續閱讀。單列滾動的長頁面是不錯的，但是我們應該適當地設置一些小節，並且環環相扣，來提高用戶的興趣使其繼續閱讀。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
但需要注意的是節與節之間的留白不要太大。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506914633724.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506914633724.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;16. 不要放太多鏈接分散用戶注意力&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
為了滿足各式用戶的需求，在頁面上放些鏈接鏈到這裡、鏈到那裡是常見的做法。如果你的主要目的是想讓用戶點擊頁面最
後那個下載按扭什麼的話，就需要三思了。因為用戶可能點擊了其他鏈接離開頁面了。所以你需要注意頁面的鏈接數量，把導航和操作鏈接用樣式區分開，盡量移除
頁面不需要的鏈接。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506919921173.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506919921173.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;17. 將操作的狀態或者進度呈現出來&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
現如今大多界面當中已經呈現了各色樣式的進度條或者標明狀態的圖標，比如郵件有已讀或未讀的狀態，電子帳單有支付或未支付的狀態。而在界面上呈現這樣的狀態對於用戶來說是很有必要的。這樣用戶就可以知道某些操作是否成功，接下來準備進行怎樣的操作。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506921020931.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506921020931.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;18. 使用獲利按鈕（好處說明）代替普通的按鈕&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
試想界面上有這樣兩個按鈕：一個是「幫你省錢」，另一個是「立即註冊」。我敢打賭大多數人會點擊第一個，因為第二個按扭讓人感覺不到有利可圖，並且「註冊」讓人聯想到填不完的表單。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
也就是說讓用戶感受到獲利的按鈕更有可能被點擊。這種讓用戶感到好處的文字信息也可放在按鈕旁邊，不一定要做為按鈕的標題。當然，正常的按鈕還是有用處的，一般用於重複性操作頻繁的地方。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506923108904.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506923108904.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;19. 使用直觀的操作而不是缺乏上下文關聯的菜單&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
直接在元素身上進行操作是更直觀明了的方式。比如在一個列表中，我們想讓用戶對每個條目進行操作那麼就把按鈕放到當前條目上，而不要把放到列表之外。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
再比如就是直接點擊元素就進入編輯狀態（比如頁面上的地址信息點擊後可以進行編輯）。這種方式比傳統的選中再點擊相應的按鈕進行操作要簡潔省事得多。當然，對於一般性的操作本身就不需要有什麼上下文的，就沒必要這麼做了，比如頁面上的前進，後退按扭。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506924863816.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506924863816.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;20. 盡量直接顯示表單而不要額外頁面&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
在一個足夠大的寬螢幕界面上最好還是直接給出表單，這比點擊按鈕再彈出表單要好很多。首先減少了點擊操作，流程變得簡潔也節省了時間。其次，直接呈現出表單可以讓用戶知道表單有多長，其實也是在告訴用戶註冊花不了多少時間。當然，這條規則適合註冊表單非常簡單的情況。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506926000027.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506926000027.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;21. 讓界面平滑顯示而不要死板地呈現&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
用戶進行操作過程中，界面上的元素會經常出現隱藏、打開、關閉、放大、縮小、移位等。給這些元素增加些自然的動畫，淡入淡出效果不但美觀，也更符合實際。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
本來元素尺寸位置的變化就是一個需要時間的動畫過程，但要注意動畫時間不要設置過長，那樣會讓想盡快完成操作的用戶不耐煩。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506930631413.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506930631413.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;22. 使用逐步的引導代替突兀的註冊&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
與其讓用戶馬上註冊，何不讓用戶先進行一些體驗式的操作呢。這個體驗過程可以展示程式的功能、特性等。一旦用戶通過
簡單幾步的操作了解了程式的價值所在，那麼它會更願意填寫註冊表單的。這種循序漸進的引導可以盡量推遲用戶註冊的時間，但又可以讓用戶在沒註冊的情況下，
進行個性化設置等簡單操作。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506932517409.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506932517409.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;23. 減少邊框避免浪費注意力&lt;/li&gt;
&lt;/ul&gt;
過程邊框會喧賓奪主。不用說，邊框確實在劃分區域進行版塊設置時有很大的作用，但同時其明顯的線條也會吸引走用戶的注意力。為了達到劃分版塊又不轉
移用戶注意力的目的，在排版時可以將界面上不同區域的元素通過空白進行分組，用上不同的背景色，將文字對齊方式進行統一，還有就是為不同區域設置不同的樣
式。&lt;br /&gt;

當使用所見即所得的界面設計工具時，我們經常在界面上方便地拖出很多區塊來，這些區塊多了就會顯得雜亂無章，所以我們又會到處放些橫線來分界。一個更好的做法是將區塊垂直對齊，這樣做不會讓那些多餘的線條來擾亂視覺。&lt;br /&gt;

&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506933706664.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506933706664.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;24. 展示產品帶來的好處而不要羅列產品特性&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
市場就是這樣的，用戶永遠只關心自身利益而產品特性對他們來說倒不是那麼重要。只有利益才更直觀地體現出使用產品所帶來的價值。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
Chris Guillebeau 在他的著作《100 美元起家》中指出，相比壓力、衝突、煩心事和未知的未來，人們在乎得更多的是愛、金錢、認同感和自由支配的空閒時間。所以我相信在展示產品特性時回歸到利益上是必要的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506936241935.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506936241935.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;25. 要設計好沒有數據時的展現&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
界面上經常需要呈現不同數量的數據，從 0、1、10、100 到 10000+ 等。這裡存在個普遍的問題就是：在程式最開始使用的 0 條數據到過度到有數據之前，該如何進行顯示界面。這也是我們經常忽視了的地方。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當程式初始沒有數據時，用戶看到的就是一片空白，此時用戶可能不知道該進行哪些操作。利用好沒有數據的初始界面可以讓用戶學習和熟悉如何使用程式，在程式中創建數據。力臻完美永遠是我們追求的目標，界面設計也不例外。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506937095765.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506937095765.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;26. 嘗試默認選擇&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
將界面做成默認用戶選中想要使用你的產品，意味著如果用戶真的需要使用，那麼可以直接點擊確定而不需要額外點選了。當然，將界面設計成默認選擇的樣子多少存在點爭議，有點強迫用戶的感覺。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
如果你想道德一點，你可以要麼把讓用戶選擇的文字寫得模棱兩可，要麼使用雙重否定這樣不那麼直白的描述，這兩種方式都可以讓用戶覺得沒有那麼強的感覺是被強迫選擇使用產品的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506938042307.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506938042307.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;27. 保持界面一致性，不要增加用戶的學習成本&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
自從 Donald Norman 的一系列著作面世後，界面設計中盡量保持一致性成了一個普遍遵循的準則。在設計中保持一致性可以減少用戶的學習成本，用戶不需要學習新的操作。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當我們點擊按鈕或者進行拖拽操作，我們期望這樣的​​操作在整個程式的各個界面都是一致的，會得到相似的結果出來。不過在讓界面變得一致之前，記住一點，適當的打破整體的一致性也是可取的。這偶爾的不一致性的設計用在你需要強調的地方可以起到很大的作用。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
所以世事無絕對，我們應遵從一致的設計準則，但適當地打破這種常規。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14506943062760.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14506943062760.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;28. 使用合適的默認值，減少用戶的額外操作&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
適當的默認值和預先填充好的表單字段可以大量減少用戶的工作量。在節省用戶寶貴的時間上面，這是種非常常見的做法，可以幫助用戶快速填完表單或者註冊信息。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507009965829.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507009965829.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;29. 遵循慣例避免重複造輪子&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
界面設計中遵從慣例跟之前的界面一致性準則很相似。如果我們遵從了界面設計中的一些約定，用戶用起來會很方便。相反，不一致和沒有遵從慣例則會提高學習成本。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
有了界面設計中這些約定，我們想都不用想就知道界面右上角（大多數情況下）的叉叉是關閉程式用的，或者點擊一個按鈕
後我們能夠預測到將會發生什麼。當然，慣例是會過時的，隨著時間的推移，同樣的操作也有可能被賦予新的含義。但要記住，當你在界面中打破這些常規時一定要
目的明確，並且出發點是好的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507010788683.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507010788683.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;30. 讓用戶覺得可以避免失去而不是獲得&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
我們喜歡成功，沒有谁愿意失敗。根據心理學得到的可靠結論，人們一般更頃向於避免失去擁有的東西而不是獲得新的利益，這一結論也適用於產品的設計和推廣中。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
試著說明你的產品會幫助客戶維護他的利益、保持健康、社會地位等，要好過告訴客戶這個產品會帶來一些他未曾擁有的東西。比如保險公司，它是在銷售我們出事之後可以得到的大筆賠償呢？還是在強調可以幫助我們避免失去擁有的財產？&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507013368966.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507013368966.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;31. 具有層次的圖形化展示優於直白的文字描述&lt;/li&gt;
&lt;/ul&gt;
具有層次的設計可以將界面上重要的部分與不次要部分區分開來。要讓界面層次分明，可以在這些方面做文章：對齊方式、間距、顏色、縮進、字體大小、元素尺寸等。當所有這些調整運用得適當時，可以提高整個界面的可讀性。&lt;br /&gt;

相比在一個很直白的界面上用戶一眼就可以從上瞟到底的設計，這樣分明的設計也可以讓用戶放慢速度來慢慢閱讀，這樣也使界面更有特色一些。就好比一次
旅行，你可以乘坐高鐵快速到達景區（從頁面頂部瞟到底部），但你也可以慢行以欣賞沿途風光。所以層次分明的設計讓眼睛有可以停留的地方，而不是對著空白單
調的一個螢幕。&lt;br /&gt;

&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507015251289.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507015251289.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;32. 將有關聯的東西分組避免雜亂無章&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
將各個功能項分組合併起來可以提高可用性。有點常識的人都知道刀子和叉子，或者打開文件和關閉文件是放在一起的。將功能相近的元素放在一起也符合邏輯，符合我們平時的認知。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507016603393.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507016603393.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;33. 使用行內即時校驗而不是提交後再告訴出錯&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
在處理表單時，最好立即檢測出用戶所填寫內容是否符合要求然後給出驗證消息。這樣錯誤一出現能就能得到改正。相反，提交後再檢查表單會給出錯誤消息，會讓用戶感到不爽又要重複之前的工作。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507018531892.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507018531892.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;34. 放寬對用戶輸入的要求&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
對用戶輸入的數據，盡量放寬限制，包括格式、大小寫什麼的。這樣做可以更人性化一點，也使得界面更加友好。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
一個再恰當不過的例子就是讓用戶輸入電話號碼的時候，用戶有很多種輸入方式，帶括號的、帶破折號的、帶空格的、帶區號和不帶區號的等等。如果你在程式碼中來處理這些格式的問題，代價也只是你一個人多寫幾行程式碼而以，卻可以減少無數用戶的工作量。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507036678117.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507036678117.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;float: none; margin: 10px 0 10px 0; text-align: center;&quot;&gt;
&lt;div id=&quot;div-gpt-ad-1449718299926-0&quot; style=&quot;float: left; height: 250px; margin-right: 10px; width: 300px;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;35. 讓用戶感覺需要快速做出響應而不是毫無時間觀念&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
適當的緊迫感是個有效的戰術可以讓用戶立即做出決定，而不是等上個十天半個月。重要的是這種戰術屢試不爽，因為它暗示了資源的緊缺或者活動的時間有限，今天可以買，但明天可能就無法這麼低價了。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
另一方面，這一戰術也讓用戶感到會錯失一次大好的機會，再一次，應用了人們害怕失去的本性。當然，這種戰術會被一些人嗤之以鼻，認為是不耿直的做法。不過，這只是種戰術而以，並且在保持合法性的前提下應用也無傷大雅。所以請不要為了營銷而在界面上製造緊迫的假象。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507037666127.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507037666127.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;36. 嘗試飢餓營銷（製造稀缺感）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
物以稀為貴。飢餓營銷給出的信息就是東西不多、只剩幾件、明天再來，可能沒了。你去比較一下批發與限量版的東西他們的價格差距有多大就知道了。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
回過頭來看，那些批發商或者大零售商，他們也使用飢餓營銷以獲得更好的銷量。但在軟體行業，我們經常會忘記有飢餓營銷這回事。因為數位產品是可以很容易拷貝複制的，不存在缺貨的情況。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
其實，在界面設計中，也可以將其運用起來與現實中的資源緊缺進行聯繫。想想一次網上研討會的門票，想想你一個月可以服務的人數限制，這些信息都可以告知用戶是有限的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507038828682.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507038828682.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;37. 讓用戶從已知裡選擇而不是直接回想&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
這一界面設計中的經典準則是有心理學依據的，相比要讓某人回想想某樣東西，從一堆東西中認出某樣東西會更容易些。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
辨識出一樣東西只需要我們稍微回憶一下，通過一些線索就可以完成。而回想則需要我們全面搜索自己的大腦。也許這也是為什麼試卷上選擇題會比簡答題做得快的原因。所以試著在界面上展示一些用戶之前涉及到的信息讓他們進行選擇，而不是讓他們想半天然後自己填寫。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507040361735.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507040361735.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;38. 讓點擊區域更大&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
像鏈接、表單的輸入框還有按鈕等，如果尺寸做得大一點則點擊起來更方便容易些。根據費特定律，使用像滑鼠這樣的外設
來點擊需要一些時間，特別是元素比較小的情況下時間會更多。鑑於此，最好還是把你的表單輸入框、按鈕等做大點。抑或者你可以保持原有的設計不變，只是把元
素可點擊區域（也就是熱區）增大。這樣的一個典型例子是手機設備上的文本鏈接和導航菜單，它們文字不一定很大但背景是拉伸的，在很寬範圍內點擊都有效。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507063353058.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507063353058.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;39. 優化頁面加載速度，不要讓用戶等太久&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
速度很重要，頁面加載速度和 UI 對操作的響應速度都直接關係到用戶是否有耐心繼續等下去。無疑地每多一秒种的等待都會失去一些用戶或者機會；一個好的解決之道當然就是優化你的頁面和圖片，除此之外還可以運用心理學讓這個等待時間顯得不那麼長。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
具體來說有兩種技巧。一是顯示進度條，二是展示其他相關或有趣的東西來吸引用戶的注意力（就好比你沿著傳送帶走走總比傻站在原地盯著一個位置看要好得多吧）。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507064389843.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507064389843.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;40. 除了按扭外，建議增加快捷鍵支持&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當你的程式廣為流傳，應該考慮下高級用戶的感受。人們總是試圖為一些重複性的操作找到更快捷的方法，快捷鍵就應運而生了。相比在界面上點來點去，快捷鍵無疑大大提高工作效率。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
一個好的例子就是現今流行於各個主流程序中的 J（後退）K（前進）快捷鍵組合，比如在 Gmail、Twitter 和 Tumblr 中。按鈕固然好，但快捷鍵會錦上添花。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507065710401.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507065710401.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;41. 嘗試錨定價格&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
就像卡尼曼觀察到的那樣，錨定效應造成的認知偏差是人類很難克服的，我們的決策受最先進入我們大腦的數字的影響，錨定數量也並不一定是一個價格，它可以是一個數。營銷人員利用錨定效應最常見的例子是同時顯示建議零售價和實際價格。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507068560570.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507068560570.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;42. 讓進度條預設已經走了一部分&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
一件事越接近完成我們的動力越強，這被稱為目標梯度效應。讓人覺得自己已經取得了進展這件事宜早不宜晚。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507072071669.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507072071669.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;43. 使用漸進顯示而不是全部展開&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
漸進顯示不讓大量無關的信息直接暴露出來，而且展現的內容有上下文的關聯，更容易讓用戶理解，不會一下展現太多表單把用戶嚇跑。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507075063770.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507075063770.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;44. 用小的承諾代替大的&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
使用承諾是一個功能強大的說服策略，充分挖掘人的自我認知一致性原則，一連竄的小問題答案的「是」，會得到更大問題的「是的」。還有顯示月費而不是年費會傳達出一種沒有合約的感覺，讓用戶覺得隨時可以退出，沒有障礙。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507080406163.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507080406163.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;45. 替換模態對話框為更溫柔的提示方式&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
雖然模態對話框更吸引用戶注意力，但是也會帶來一些其他問題，首先阻止了用戶操作對話框之外的操作，而且打斷了用戶之前的操作動作。為什麼不嘗試行內或滑出等不那麼礙眼的提示方式呢？&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507084253976.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507084253976.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;46.​​ 嘗試多功能而不是分成很多功能塊&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
例如可以在輸入框裡實現篩選過濾的功能，而不用增加額外的篩選菜單。打分功能裡增加懸停顯示功能而不是增加額外的顯示模塊。但是不要濫用，否則會增加用戶的學習曲線難度。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507088970595.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507088970595.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;47. 嘗試增加圖標文本&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
圖標和文字在一起可以減少很多歧義，比如以下下箭頭到底是表示往下移？降低優先級還是下載呢？或者「X」圖標代表刪除？禁止還是關閉呢？&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當用戶沒有時間理解你界面圖標表達的意思的時候問題就麻煩了，所以為了理解，最好圖標要配上文本，如果空間實在不夠，可以用懸停圖標顯示提示文本的方式展現。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507095577042.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507095577042.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;48. 嘗試使用更自然的語言代替乾癟的文本&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
自然語言比簡短、嚴格的短語更方便用戶理解。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507097556657.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507097556657.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;49. 激發用戶的好奇心&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
提供一個能激發用戶好奇心的信息，這可能是一個樣章、演示、試用，或做了 XYZ 才能看得到的免費內容。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507100680310.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507100680310.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;50. 嘗試消除用戶顧慮而不是假設一切正常&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
告訴你的客戶支付是安全的、貨物免運費而且隨時可以退換，沒有任何後顧之憂，這是能提高轉化率的極佳策略。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507103822069.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507103822069.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;51. 嘗試價格錯覺&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
改變提示方式讓人們完全靠自己判斷你的產品的價值，也可以幫助他們做。如果你決定利用人類不理性，就可以用不同價格
的顯示方式，讓你的產品變得視為更有價值。比如在價格前加上「只」、「實惠」等詞。把價格分解為每單位價格（例如：每天 1 塊錢，而不是一月 30 
塊會員費） 另外，可以使用以 9 結尾的數來減少價格位數。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507109156672.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507109156672.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;52. 嘗試感謝你的用戶而不是簡單的完成確認&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
透過表達對用戶的欣賞和關心等感謝用語，可以讓你的業務、產品或 UI 更加人性化。感謝可以引導出進一步的對話或行動。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
感謝您閱讀這一段。:)&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507111040616.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507111040616.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;53. 直接給出有意義的結果不要讓用戶做數字轉換工作&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
比如顯示 3 分鐘前就比顯示一個時間日期更容易理解，讓用戶免除一切數學計算。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507112449700.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507112449700.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;54. 給予用戶再次確認選擇的自由&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
在行動按鈕或選擇之後告訴用戶有自我選擇或拒絕的自由。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507116051507.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507116051507.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;55. 讓獎勵變得隨機&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
可變的隨機的獎勵會讓用戶上癮（遊戲讓人上癮的原理之一）。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507117652146.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507117652146.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;56. 抓住用戶的注意力&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
可以用增加尺寸和提高對比度的方式來突出重要行動。其他吸引注意力的方法有：採用不規則形狀、自動焦點、、固定跟隨（浮動）以及方向箭頭等。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507120720992.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507120720992.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;57. 讓表格對比清晰明確&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
表格應該顯示出最相關的屬性差異，有助於用戶做出單個決定。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507122612576.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507122612576.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;58. 顯示一組而不是單獨的一項&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
人有收集東西的癖好，無論是物理的還是虛擬的。收集一整套東西會自然的成為奮鬥目標。通常獲得一整套東西帶來的收益增加（蛋糕比其單獨的成分更大、更好）。通過顯示過去的收穫也會增強以後的行為動機。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507127449062.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507127449062.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;59. 讓用戶有明晰的期望而不是蒙在鼓裡&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
你在 X 步驟中的第一步；你的選擇結果在 Y 中；在 Z 之前你會收到 XX，下一個任務將全部完成。這種不斷的清晰的提示可以建立與用戶之間的信任，而不是讓用戶兩眼摸黑。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507132323465.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507132323465.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;60. 用幽默代替嚴肅&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
為什麼要一直那麼嚴肅呢？在你的 UI 裡加入一些幽默的元素有助於與你的用戶 / 客戶之間建立良好的情感聯繫，也更容易原諒你的一些錯誤。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507133365135.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507133365135.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;61. 用反饋代替沉默&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當我們執行了一個動作，肯定我們希望知道是否成功。比如：當我們發送郵件時候希望知道是否發送成功。什麼反饋也沒有意味著不確定性：起作用了麼？點擊了麼？按鈕按下去了麼？是否要重試？成功提醒是非常有價值的交互。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507137942549.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507137942549.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;62. 判斷出用戶意圖&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
如下圖所示，這是亞馬遜的一個多級菜單，當第一個菜單展開，用戶滑鼠往右下角移動路過第二個菜單的時候，之前的展開的菜單並不會消失，他們靠算法預判到用戶可能是想點擊第一個菜單下的某個子菜單。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507139716733.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507139716733.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;63. 使用寬鬆的間隔避免元素擠在一起&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
空白的填充可以讓內容和表格的可讀性更好，廣泛適用於列表、表格、段落等元素。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507142779386.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507142779386.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;64. 使用講故事的方式而不是列出事實&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
講故事是最古老的傳播方式，可以在著頁面和各種 UI 
交互頁使用。一個基本的故事有幾個簡單的元素，如場景、帶著目的的人物、遇到的問題。故事可以引發讀者的情感反應，就像自己遇到了同樣的處境。這樣，故事
也可變得更加難忘。這也就是為什麼銷售長久以來喜歡講故事，說明這非常有效的。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507146417713.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507146417713.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;65. 使用可靠的內容，避免造假&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
人們可以一眼就看出太假的東西，為了讓你的產品更值得信賴，&lt;span style=&quot;color: black;&quot;&gt;&lt;b&gt;不要造假&lt;/b&gt;&lt;/span&gt;。股票高高的走勢圖和網頁上開心笑的人沒有任何理由和意義。混雜著好和壞的評價，非整數數字讓你的網頁更真實可靠。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507149454882.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507149454882.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;66. 隨著用戶的進階而優化&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
當用戶對你的操作界面很熟悉之後，一些給新手顯示的東西或者一些經常顯示的東西變得不那麼重要，可以去掉或者移動其他地方。這樣可以讓設計更加精簡。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507152329248.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507152329248.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;67. 以別人為中心&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
想建立社會影響力的時候就要優先考慮別人的利益，把對話中的「我」變成「你」。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507156298046.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507156298046.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;68. 對於你顯而易見的東西可能對於別人不是&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
有些事情對於我們來說似乎是顯而易見的，對於別人卻不是。如下圖中讓用戶輸入 URL 快捷方式，用戶不一定知道指的是什麼：&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507159376553.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507159376553.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;69. 讓語言簡潔明了，去掉多餘的廢話&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
使用更少、更簡潔的話，在寫完草稿後，看看是否還可以縮減。抓住要點可以避免丟掉用戶的注意力。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507160986237.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507160986237.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;70. 使用響應式佈局避免靜態佈局&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
沒有什麼比出現橫縱雙滾動條更糟糕的頁面了！讓頁面支持響應式佈局，這樣在各種大小的移動設備上都能良好的顯示。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507161370759.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507161370759.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;71. 讓視覺效果清晰明確&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
讓不同的元素成組，使用不同的字號、使用不同的色調，讓視覺效果清晰明確。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507165782208.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507165782208.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;72. 讓你的界面可糾錯&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
出錯是難免的，所以用戶界面應該允許細微的糾正。如更換帳號或更換地址等&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507167061175.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507167061175.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;73. 讓用戶嘗試社會承諾&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
人類偏愛一致的自我形象，社會承諾會成為一種自我動機。在這一點上「公開的社會承諾」，會讓人更有責任去兌現。當我們告訴人們，我們會做一些事情（或者採取公開的行動），那麼未來行動的可能性就會更高。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507169773290.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507169773290.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;74. 增加重試和重做的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
例如：當上傳圖片時候，文件上傳失敗或者對上傳的圖片不滿意想換一張的時候，重試和重做就很有必要。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507171289475.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507171289475.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;fr-tag&quot;&gt;75. 把過多的選擇去掉&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
更多的選擇讓決策越難，甚至還會降低滿意度，因為這讓後悔和自責傾向增加。著名的果醬研究實驗一次次的被驗證。&lt;/div&gt;
&lt;div class=&quot;fr-tag&quot;&gt;
&lt;a href=&quot;http://www.tuijiankan.com/media/14507173821384.jpg&quot; title=&quot;&quot;&gt;&lt;img alt=&quot; 一個好的界面設計應該注意的 75 個原則&quot; class=&quot;fr-dib fr-fin fr-tag before-fade-in after-fade-in&quot; src=&quot;http://www.tuijiankan.com/media/14507173821384.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/section&gt;&lt;/div&gt;
&lt;/section&gt;&lt;/div&gt;
&lt;/div&gt;
資料轉載自：http://buzzorange.com/techorange/2015/12/29/75-rules-of-a-good-ui-design/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/7349708601060243239/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2015/12/ui-75-75-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7349708601060243239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7349708601060243239'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2015/12/ui-75-75-1.html' title=''/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-4152633838436254105</id><published>2015-12-30T02:04:00.002-08:00</published><updated>2015-12-30T02:04:59.542-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="個人成長"/><title type='text'>2016要變成更棒的自己！10個可以從今天做起的好習慣</title><content type='html'>我們都曾經告訴過自己，要對自己立下一些目標，讓自己變得更好，例如減重、定期去健身房運動、持續進修…等等。有些我們可能已經完成、有些卻中途改變計劃或放棄。&lt;br /&gt;
Wild Creations的創辦人Rhett Power 
在《Inc.》雜誌網站上撰文指出，有些事情我們其實不需要等待就可以付諸實踐。Rhett Power 
並認為，要成為一個更好的人，我們必須變得善良，他並提出了10個「讓善良變成一種習慣」的有效方法，供我們參考。&lt;br /&gt;
&lt;h3&gt;
1.習慣對人笑&lt;/h3&gt;
笑容就像人際關係的滋潤際，能夠讓彼此的情感交流。笑不需要花費任何成本，而是你每天可以輕鬆做到的事，同時，又能讓人對你印象更好、改善人際關係。&lt;br /&gt;
&lt;h3&gt;
2.主動開口打招呼&lt;/h3&gt;
一句簡單的「哈囉」或是「早安」，再搭配笑容，就能與人產生連結。&lt;br /&gt;
&lt;h3&gt;
3.主動幫助他人&lt;/h3&gt;
即使別人無法幫助你也別氣餒，當你先主動幫助別人，別人也會願意在未來主動幫助你，但你得先願意主動去幫助別人。別害怕先付出，往往付出最多的人最後都得到最多。&lt;br /&gt;
&lt;h3&gt;
4.不吝嗇給予陌生人問候&lt;/h3&gt;
即便是剛認識的陌生人，往往你隨口的一句問候，就能讓對方有一整天的好心情，何樂而不為。&lt;br /&gt;
&lt;h3&gt;
5.堅持自己的原則，即使這世界有時候是不公平的&lt;/h3&gt;
有時候你可能會面對某些不公平的狀況，即便你知道自己是對的，但又無法改變，你不需要因此氣餒。&lt;br /&gt;
&lt;h3&gt;
6.原諒他人&lt;/h3&gt;
或許你曾經跟某些人處得不快，試著把它忘記吧！學會放下，然後在自己的道路上繼續前進。&lt;br /&gt;
&lt;h3&gt;
7.學會付出&lt;/h3&gt;
即便只是一些小事，也別吝嗇付出，因為往往付出最多的人，最終能得到最多，因為幫助別人其實就是在幫助未來的自己。&lt;br /&gt;
&lt;h3&gt;
8.幫助需要被幫助的人&lt;/h3&gt;
這世界上有很多需要被幫助的人，試著伸出你的援手，有時候你的一個小幫助，在他們眼中卻是個大幫助。&lt;br /&gt;
&lt;h3&gt;
9.無回報的做些事&lt;/h3&gt;
例如志工就是一個不錯的方式，即便你實質上可能沒有獲得東西，但卻能從中學到不少。&lt;br /&gt;
&lt;h3&gt;
10.試著讓別人笑&lt;/h3&gt;
學會將笑容帶入你與他人的生活中，你的生活會因為這些笑容而變得更好。</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/4152633838436254105/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2015/12/201610.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/4152633838436254105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/4152633838436254105'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2015/12/201610.html' title='2016要變成更棒的自己！10個可以從今天做起的好習慣'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-1096935005712791923</id><published>2015-12-29T17:29:00.001-08:00</published><updated>2015-12-29T17:31:09.076-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="經營管理"/><title type='text'> 12 個創業者可以避免的後悔 </title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;
12 個創業者可以避免的後悔
&lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;post-body entry-content&quot; id=&quot;post-body-5182176702556517690&quot; itemprop=&quot;description articleBody&quot;&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
創業者從錯誤中學習，但有些錯誤會造成長期、不可逆的苦果，仍須提前注意、警惕。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
1. 跟厲害的混蛋合夥&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
你打從心裡不喜歡這個人，之所以找他一起創業，只是因為他的技術很強，或是擁有你需要的人脈、經驗、履歷。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：將來勢必要請他離開，離開時幾乎保證會讓你跟公司受到很大傷害 ─ 混蛋不是白混的。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
2. 為了一個商機創業&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
對這個產業、客戶沒有任何熱忱，純粹只是看到了一個所謂商機，就一頭栽到裡面去。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：缺乏熱忱又急於獲利，頂多就是陪公子讀書，損失金錢與寶貴的人生。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
3. 把這件事當做兒戲&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
認為創業很酷、很浪漫，人生必須有一次追逐夢想的體驗。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：在真槍實彈的創業戰場，觀光客心態輕則損失門票錢，重則造成一輩子的傷害。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
4. 靠著婊人往上爬&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
總有一天繞回來婊你自己。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
5. 對的人在錯的位置上&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
丁丁是個人才，所以先請進來再說。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：公司裡並沒有他的位置，只好幫他創造位置、找工作給他做，無故增加公司成本，他也很難從中得到滿足，最後往往失望的離開，而公司白白犧牲了資本與機會。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
6. 借了不該借的錢&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
為了救火去借錢，或是還沒有商業模式就盲目的去申請青年創業貸款。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：創業失敗機率遠大過成功，所以最常見的情況就是失敗卻背了一屁股債，還要打工五年、八年才還清。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
7. 拿了不該拿的投資&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
因為他不斷引誘你，因為不拿白不拿，因為錢快燒完，你拿了缺乏共識的投資人的錢。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：不久之後他就會開始管你，聽他的可能把公司搞成四不像，不聽他的他又去外面放話，讓你陷入人間煉獄。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
8. 過早稀釋&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
因為不熟悉增資的遊戲規則，因為不知道如何繞過台灣無理的&lt;a href=&quot;http://mrjamie.cc/2013/04/16/10-ntd-par-value/&quot; style=&quot;border: 0px; color: #004d99; margin: 0px; outline: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;面額制度&lt;/a&gt;，你在第一輪增資就稀釋了 40%、60%，甚至 80% 的股權。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：前面稀釋的越多，後面增資的選擇就越少，當你被稀釋到只剩 10%、5%，這還算是你的公司嗎？&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
9. 用錯誤的結構增資&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
為了趕快把錢拿進來，跟投資人簽誇張的對賭條款、完全不平等的清算條款等非常另類的增資合約，或是用非國際慣例的本土式結構設計特別股。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：亂七八糟的資本、合約結構，嚇跑後面想投資的創投。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
10. 不用功&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
認為只要把產品顧好，客人就會來，對於身處的垂直市場、上下游產業、橫向相關領域、國際同業，缺乏積極、深刻的研究。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：閉門造車，無法成為氣候。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
11. 沒把英文學好&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
反正暫時用不到。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：外國潛在夥伴來台、需要出國考察，甚至向海外拓展，破爛的英文讓你事倍功半。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
12. 不運動&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
每天忙到沒時間了。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
後果：公司有點成績，正需要你帶領它更上一層樓時，健康先亮起紅燈。&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Trebuchet MS&#39;, &#39;Myriad Pro&#39;, HelveticaNeue-Light, &#39;Helvetica Neue Light&#39;, &#39;Lucida Grande&#39;, &#39;Helvetica Neue&#39;, Arial, &#39;Microsoft Yahei&#39;, &#39;Microsoft JhengHei&#39;, 微軟正黑體, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 26px; font-weight: normal; line-height: 1.4; margin: 1em 0px 0.6em; outline: 0px; padding: 0px;&quot;&gt;
結論&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
創業是長期極限運動，要持續頂尖，有太多方方面面需要注意，與大家共勉之。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #0d0d0d; font-family: &#39;Helvetica Neue&#39;, Arial, 微軟正黑體, &#39;Microsoft JhengHei&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, sans-serif; font-size: 14px; letter-spacing: 0.5px; line-height: 26.600000381469727px; margin-bottom: 9px; outline: 0px; padding: 0px;&quot;&gt;
貼文來自:http://mrjamie.cc/2014/06/18/12-regrets/&lt;/div&gt;
&lt;/div&gt;
&lt;span class=&quot;post-author vcard&quot;&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/1096935005712791923/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2015/12/12.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1096935005712791923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1096935005712791923'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2015/12/12.html' title=' 12 個創業者可以避免的後悔 '/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-3655463669632635211</id><published>2015-12-29T17:19:00.000-08:00</published><updated>2015-12-30T02:04:49.984-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="個人成長"/><title type='text'>有錢人擁有的10種習慣 </title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;
有錢人擁有的10種習慣
&lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: grey; font-family: Helvetica, Arial, &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16.639999389648438px; margin-bottom: 1em; margin-top: 1em;&quot;&gt;
1、與人分享&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: grey; font-family: Helvetica, Arial, &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16.639999389648438px; margin-bottom: 1em; margin-top: 1em;&quot;&gt;
有錢人意味著擁有的東西綽綽有餘，他們每年都會拿出收入的10%甚至更多，來幫助窮人。&lt;/div&gt;
&lt;div class=&quot;text_exposed_show&quot; style=&quot;background-color: white; color: grey; display: inline; font-family: Helvetica, Arial, &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16.639999389648438px;&quot;&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
2、咬定目標不放&lt;br /&gt;
有錢人多是那些以成功為目標的人，堅持計劃的人成功概率為84%，你的意志力量就是一切能力的體現，因為意志力=成就。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
3、勤於思考&lt;br /&gt;
有錢人與窮人並沒有本質上的區別，他們每天也都是24小時，只是由於他們的思考方式與眾不同。&lt;br /&gt;
這一切都基於他們擁有一個好習慣——比如每天堅持看一小時的書，博學勤思的好習慣讓他們變得更有知識，更有效率，成就了他們的未來。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
4、改掉壞習&lt;br /&gt;
意識到壞習慣的存在是改變的第一步。&lt;br /&gt;
習慣不可能被根除，只能夠被替換，要用好的習慣克服壞的習慣，培訓你的潛意識，從正面激勵的方式開始。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
5、專注的力量&lt;br /&gt;
高效的精力集中是成就天才的奧秘，改掉壞習慣需要聚集更多的力量。&lt;br /&gt;
獲取財富或日常的工作也需要聚集，做事不要半途而廢，永遠記住，你眼下正做的事就是你最重要的事，你每次只需做好一件事。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
6、千里之行，始於足下&lt;br /&gt;
財富是一分錢一分錢積累起來的，有錢人懷裡經常揣著8000～10000萬美元，因為只有錢才能吸引錢，錢也能為他們帶來自信和靈感。&lt;br /&gt;
當有錢的美好感覺能給他們帶來快感時，潛意識的暗示就已經幫他們賺錢了。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
7、槓桿的作用=速度&lt;br /&gt;
在商業世界有5種槓桿作用：&lt;br /&gt;
1、別人的錢；2、別人的經驗；3、別人的主意；4、別人的時間；5、別人的工作。&lt;br /&gt;
在所有的軍事著作中，“借”是軍事謀略中最高的智慧。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
8、善於投資&lt;br /&gt;
其實，所有的投資當中，為提高自己的賺錢能力和技能而投資是最好的投資。&lt;br /&gt;
所以永遠不要忘掉，投資於自身，因為自己才是最有潛力可挖的金礦。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
9、人脈的力量&lt;br /&gt;
要讓自己擁有迷人的微笑，瀟灑動人的形象，也要不斷地為別人提供優質的服務，並幫助任何你能夠幫助的人。&lt;br /&gt;
你結交朋友的速度等於你賺錢的速度，要善於利用別人的力量，讓更多人幫你賺錢。&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;br /&gt;
10、謙虛的力量&lt;br /&gt;
三人之行，必有我師。每個人都能用自己的經歷為你提供效益。&lt;br /&gt;
在易經中，謙虛是最吉利的卦詞。凝聚最具遠見的商業領袖，尋求人類共同價值觀，為商業精神發現新的動力，確立正確方向。&lt;br /&gt;
使命第一，掌握時代先機，把握行業脈搏與動態。&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/3655463669632635211/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2015/12/10.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/3655463669632635211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/3655463669632635211'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2015/12/10.html' title='有錢人擁有的10種習慣 '/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-7796215106795509562</id><published>2015-12-29T01:55:00.002-08:00</published><updated>2015-12-30T16:51:02.064-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="經營管理"/><title type='text'>企劃、創業、經營 -- 產 銷 人 發 財 資 ，五管或六管</title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;
企劃、創業、經營 -- 產 銷 人 發 財 資 ，五管或六管
&lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRAOoLsrYDYmbcHS9jM7D3zwWqB34LUmneeE0aBrF3scqP4Ql4eeqk1I153wZhYFLsh9v-h6DuA_jkuDOStxUN7K-U_K-3tVv0wR2cW3RK1zmmIWhpigPtzXLojTpyeRpDj4Q3KJwRXk/s200/12.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;產 &amp;nbsp;銷 人 發 財 資 ，五管或六管&lt;br /&gt;
企業管理的五管定義+資訊管理企業管理的整體定義是:企業追求永續生存的總稱，而為了易於分工而合作，分成五大區塊，這就是:產;銷;人;發;財的五個部門的分管，也叫五管其個別的定義如下:&lt;br /&gt;
1, 產;既生產,&lt;br /&gt;
用4M來解釋&lt;br /&gt;
材料(Meterial),包含:購入的原料;物料;總務用品;消耗品...等&lt;br /&gt;
設備(Machine),一般指法定可折舊抵稅的機械或儀表或交通工具等&lt;br /&gt;
人員(Men),讓材料與設備加工做出成品,都需人力的投入&lt;br /&gt;
方法(Methord),為了讓人員安全又有效的加工,其所定的操作標準為之&lt;br /&gt;
&lt;br /&gt;
2. 銷;既銷售或行銷,&lt;br /&gt;
用6P來解釋&lt;br /&gt;
產品(Product),生產後的產品,及時賣出去,貨款又很快的全收回&lt;br /&gt;
客人(People),尋找買多,又讓他滿意的消費者&lt;br /&gt;
通路(Place),產品出售之管道:用經銷或直賣,因銷售的規則不同而選定&lt;br /&gt;
價格(Price),如何讓通路的有錢賺?自己有最佳的利潤,其平衡點的設計&lt;br /&gt;
促銷(Promotion),有時以折價或買多少送多少的方式,消化庫存或打知名度&lt;br /&gt;
策略(Police),上述個的整合訂出:何時?什麼人?該做何事?的計劃&lt;br /&gt;
&lt;br /&gt;
3. 人; 及人事或人力&lt;br /&gt;
由徵選新進;在職訓練;升遷調任;薪資架構;生涯輔導;退休安排...一條龍&lt;br /&gt;
&lt;br /&gt;
4. 發,為研發;&lt;br /&gt;
就是好要更好的研究(Research)與無中生有的發展(Devolpment)以增競爭力,叫研發&lt;br /&gt;
&lt;br /&gt;
5. 財,是財務;&lt;br /&gt;
管現金收支;記帳;稽核;與資金運作&lt;br /&gt;
&lt;br /&gt;
6. 資訊管理&lt;br /&gt;
是一個全面的策略，針對您公司的資訊資產，取得和建立單一、準確和權威的正確來源，並提供隨選服務。重要資訊是定義物件時唯一需要的核心資料，這些物件包括：當事人（客戶、廠商、供應商、貿易夥伴或員工）、場所（位置或地理）、和事物（產品、服務或帳戶）。&lt;br /&gt;
重要資訊不會像交易資料那樣經常變更，業務流程和其他應用也都要參考重要資訊。今日，重要資訊分佈於多個應用中，常常不能及時同步，也就沒有真正的「黃
金」來源。既然統一管理資料並提供給各個消費系統使用，能降低成本及提升效率，為什麼還要在多個應用中放置相同的資料呢？當組織在整個企業層面上使用重要
資訊時，就不需要分散、分部門維護「正確版」資料。&lt;br /&gt;
今日，在大多數組織中，兩個不同的部門可自由針對相同產品或客戶給予不同的名稱。例如，在某公司的某個系統（原始設備目錄）中，一種產品可能稱為
「Mini Van Alternator - Sports Model」，而在另一個系統（服務零件目錄）中，該產品可能叫做「105 amp 
Alternator - Mini 
Van」，二者無法相互比對，因為這些系統並沒有聰明到能夠知道它們是同一種產品。時間一久，工程師可能會設計出兩種不同的產品，並向同一家供應商針對兩
種不同的產品進行採購。在這個例子中需要的是單一系統來能夠幫助標明這些問題、形成正確的結論、清理重要資訊，並取得一個完整、一致和簡潔的重要資訊視
野。&lt;br /&gt;
&lt;br /&gt;
一個企業的五管,分工理論與實務例子很多可參考，但;仍有不少的死亡企業，問題是在總經理或其幕僚的整合管理的經營好壞上。企業管理的好壞,端視整體的整
合力道而定，這也是&quot;五管之分工&quot;外，應朝&quot;整體管理&quot;的經營方向走，企業,才能永續經營而長存。資訊管理的整合能力與決策就非常重要。&lt;br /&gt;
&lt;br /&gt;
出處：http://kudonla.blogspot.tw/2014/06/blog-post.html&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/7796215106795509562/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2015/12/1-4m-meterial.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7796215106795509562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7796215106795509562'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2015/12/1-4m-meterial.html' title='企劃、創業、經營 -- 產 銷 人 發 財 資 ，五管或六管'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRAOoLsrYDYmbcHS9jM7D3zwWqB34LUmneeE0aBrF3scqP4Ql4eeqk1I153wZhYFLsh9v-h6DuA_jkuDOStxUN7K-U_K-3tVv0wR2cW3RK1zmmIWhpigPtzXLojTpyeRpDj4Q3KJwRXk/s72-c/12.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-9053048332902456218</id><published>2013-06-06T01:57:00.001-07:00</published><updated>2015-12-30T16:58:30.486-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Regular Expression"/><title type='text'>Regular Expressions- RE簡介(詮釋位元 ? + *)</title><content type='html'>量詞(quantifiers)&lt;br /&gt;
? (question mark):代表可以省略&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
color或colour&amp;nbsp; ==&amp;gt; colou&lt;span style=&quot;color: red;&quot;&gt;?&lt;/span&gt;r&lt;br /&gt;
(July|Jul) (fourth|4th|4) ==&amp;gt; July? (fourth|4(th)&lt;span style=&quot;color: red;&quot;&gt;?&lt;/span&gt;)&lt;/blockquote&gt;
&lt;br /&gt;
+ :代表緊鄰前面的項目出現一次或多次&lt;br /&gt;
&lt;br /&gt;
*(asterisk) :代表緊鄰前面的項目出現任何次數(包含不出現)&lt;br /&gt;
&lt;br /&gt;
...* :代表嘗試匹配越多次越好，但是有需要的話也可以完全沒有內容。&lt;br /&gt;
...+ :代表嘗試匹配越多次越好，但是他在不能至少匹配一次的情形下會失敗。&lt;br /&gt;
...? : 與...*很像，在正規表達式之內一定會成功，差異在於匹配的是那些文字。&lt;br /&gt;
&lt;br /&gt;
。? :允許&lt;span style=&quot;color: red;&quot;&gt;一個可省略&lt;/span&gt;的空白字元。&lt;br /&gt;
。* :允許&lt;span style=&quot;color: red;&quot;&gt;任意數量&lt;/span&gt;的可省略空白字元。&lt;br /&gt;
註: 。指的是空白字元&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: blue;&quot;&gt;至少需要&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: purple;&quot;&gt;最多嘗試&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 意義&lt;/blockquote&gt;
?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;無&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: purple;&quot;&gt; 1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0~&lt;span class=&quot;st&quot;&gt;1次&lt;/span&gt;&lt;br /&gt;
*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; 無&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: purple;&quot;&gt;不限&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0~&lt;span class=&quot;st&quot;&gt;∞次&lt;/span&gt;&lt;br /&gt;
+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; 1&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: purple;&quot;&gt;不限&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1~&lt;span class=&quot;st&quot;&gt;∞次&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
定義匹配次數範圍:&lt;br /&gt;
......{下限,上限} (還沒幾個egrep版本支援這個寫法)&lt;br /&gt;
ex. {0,1} 跟 ? 一樣&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/9053048332902456218/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_6.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/9053048332902456218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/9053048332902456218'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_6.html' title='Regular Expressions- RE簡介(詮釋位元 ? + *)'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-525735368009806023</id><published>2013-06-05T19:00:00.000-07:00</published><updated>2015-12-30T16:58:30.482-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Regular Expression"/><title type='text'>Regular Expressions- RE簡介(忽略大小寫差異)</title><content type='html'>%egrep &lt;span style=&quot;color: red;&quot;&gt;-i&lt;/span&gt; &#39;^(From|Subject}Date): &#39; mailbox&lt;br /&gt;
-i 這不是GE的一部分，而許多工具都有提供的有用功能</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/525735368009806023/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_5.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/525735368009806023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/525735368009806023'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_5.html' title='Regular Expressions- RE簡介(忽略大小寫差異)'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-4700827484897583312</id><published>2013-06-04T19:42:00.001-07:00</published><updated>2015-12-30T16:58:30.478-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Regular Expression"/><title type='text'>Regular Expressions- RE簡介(選項)</title><content type='html'>&lt;span style=&quot;color: orange;&quot;&gt;|代表&quot;或&quot; &lt;/span&gt;:&lt;br /&gt;
&amp;nbsp;底下三個表達式，全部代表相同意思&lt;br /&gt;
Jeffrey|Jeffery&lt;br /&gt;
Jeff(rey|ery)&lt;br /&gt;
Jeff(re|er)y &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;底下四個表達式，全部代表相同意思&lt;br /&gt;
(Geoff|Jeff)(rey|ery)&lt;br /&gt;
(Geo|Je)ff(rey|ery)&lt;br /&gt;
(Geo|Je)ff(re|er)y&lt;br /&gt;
Jeffrey|Geoffery|Jeffery|Geoffrey&lt;br /&gt;
&lt;br /&gt;
^From|Subject|Date:. 與^(From|Subject|Date):.有非常大的差異&lt;br /&gt;
&amp;nbsp;^(From|Subject|Date):. 他會匹配:&lt;br /&gt;
1. 行首From:.&lt;br /&gt;
2. 行首Subject:. &lt;br /&gt;
3. 行首Date:.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;[root@www mail]# egrep &#39;^(From|Subject|Date): &#39; root&lt;br /&gt;
Date: Thu, 23 Aug 2012 10:38:12 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Fri, 24 Aug 2012 10:21:47 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Mon, 27 Aug 2012 10:11:18 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Tue, 28 Aug 2012 10:20:02 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Wed, 29 Aug 2012 14:15:20 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Thu, 30 Aug 2012 16:50:30 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain&lt;br /&gt;
Subject: Logwatch for www.eric.com.tw (Linux)&lt;br /&gt;
Date: Fri, 31 Aug 2012 14:27:30 +0800&lt;br /&gt;
From: logwatch@localhost.localdomain</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/4700827484897583312/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_4.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/4700827484897583312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/4700827484897583312'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re_4.html' title='Regular Expressions- RE簡介(選項)'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-3965856378927308378</id><published>2013-06-04T02:38:00.001-07:00</published><updated>2015-12-30T16:58:30.473-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Regular Expression"/><title type='text'>Regular Expressions- RE簡介(字元類別)</title><content type='html'>^cat$&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
字面上代表: 假如一行是以行首開始(每一行都有)，緊鄰著c.a.t、接著緊接行尾，就匹配。&lt;br /&gt;
實際代表: 內容只有cat的一行，沒有額外單詞、空白、符號......只有&#39;cat&#39;。&lt;/blockquote&gt;
^$ &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
字面上代表: 假如一行是以行首開始，緊接行尾，就匹配。&lt;br /&gt;
實際代表: 一個空行(裡面什麼都沒有，連空白也沒有)。&lt;/blockquote&gt;
^&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
字面上代表: 假如一行有行首，就匹配。&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
實際上沒有意義: 因為每一行都有行首，就算空行也會匹配。&lt;/blockquote&gt;
[^...]&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
會匹配任何&lt;span style=&quot;color: red;&quot;&gt;沒有&lt;/span&gt;列出的字元，與[...]剛好相反。&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ex. % eprep &#39;q[^u]&#39; word.list&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Iraqi&lt;br /&gt;
miqra&lt;br /&gt;
qasida&lt;br /&gt;
qintar&lt;br /&gt;
qoph&lt;br /&gt;
zaqqum&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/3965856378927308378/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/3965856378927308378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/3965856378927308378'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2013/06/regular-expressions-re.html' title='Regular Expressions- RE簡介(字元類別)'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-5066170480540019940</id><published>2011-12-08T19:55:00.000-08:00</published><updated>2015-12-30T16:40:08.421-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>c++ template</title><content type='html'>&lt;a href=&quot;http://hatsukiakio.blogspot.com/2009/05/c-template.html&quot;&gt;&amp;nbsp;http://hatsukiakio.blogspot.com/2009/05/c-template.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/5066170480540019940/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/12/c-template.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/5066170480540019940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/5066170480540019940'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/12/c-template.html' title='c++ template'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-8095139117579842519</id><published>2011-12-06T00:50:00.000-08:00</published><updated>2015-12-30T16:40:26.012-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>Public, Private, and Protected 繼承</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;2&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;ZH-TW&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:SpaceForUL/&gt;    &lt;w:BalanceSingleByteDoubleByteWidth/&gt;    &lt;w:DoNotLeaveBackslashAlone/&gt;    &lt;w:ULTrailSpace/&gt;    &lt;w:DoNotExpandShiftReturn/&gt;    &lt;w:AdjustLineHeightInTable/&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:EnableOpenTypeKerning/&gt;    &lt;w:DontFlipMirrorIndents/&gt;    &lt;w:OverrideTableStyleHps/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;    &lt;m:brkBin m:val=&quot;before&quot;/&gt;    &lt;m:brkBinSub m:val=&quot;--&quot;/&gt;    &lt;m:smallFrac m:val=&quot;off&quot;/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val=&quot;0&quot;/&gt;    &lt;m:rMargin m:val=&quot;0&quot;/&gt;    &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;    &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;    &lt;m:intLim m:val=&quot;subSup&quot;/&gt;    &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:表格內文;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 mso-bidi-font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;
 mso-font-kerning:1.0pt;}
table.MsoTableGrid
 {mso-style-name:表格格線;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-priority:59;
 mso-style-unhide:no;
 border:solid windowtext 1.0pt;
 mso-border-alt:solid windowtext .5pt;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-border-insideh:.5pt solid windowtext;
 mso-border-insidev:.5pt solid windowtext;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 mso-bidi-font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;
 mso-font-kerning:1.0pt;}
&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: #ff3300; font-family: Times-Roman; font-size: 28.0pt; mso-bidi-font-family: Times-Roman; mso-font-kerning: 0pt;&quot;&gt;Public, Private, and Protected &lt;/span&gt;&lt;span style=&quot;color: #ff3300; font-family: TT531o00; font-size: 28.0pt; mso-bidi-font-family: TT531o00; mso-font-kerning: 0pt; mso-hansi-font-family: Times-Roman;&quot;&gt;繼承&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #ff3300; font-family: Times-Roman; font-size: 28.0pt; mso-bidi-font-family: Times-Roman; mso-font-kerning: 0pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 1184;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 34.0pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0; page-break-inside: avoid;&quot;&gt;   &lt;td style=&quot;border: solid windowtext 1.0pt; height: 34.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 65.15pt;&quot; valign=&quot;top&quot; width=&quot;87&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td colspan=&quot;4&quot; style=&quot;border-left: none; border: solid windowtext 1.0pt; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 468.95pt;&quot; valign=&quot;top&quot; width=&quot;625&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&amp;nbsp;衍生類別 (Derived)&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;height: 34.0pt; mso-yfti-irow: 1; page-break-inside: avoid;&quot;&gt;   &lt;td rowspan=&quot;4&quot; style=&quot;border-top: none; border: solid windowtext 1.0pt; height: 34.0pt; layout-flow: vertical-ideographic; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 65.15pt;&quot; valign=&quot;top&quot; width=&quot;87&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;基&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;礎&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;類&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;別&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;(Base)&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; margin-right: 5.65pt; text-align: center;&quot;&gt;
&lt;span style=&quot;color: black; font-family: TT541o00; font-size: 22pt; line-height: 50%;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 60.15pt;&quot; valign=&quot;top&quot; width=&quot;80&quot;&gt;&lt;/td&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.95pt;&quot; valign=&quot;top&quot; width=&quot;197&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Public&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: black; font-family: TT541o00; line-height: 50%; mso-bidi-font-family: TT541o00; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-hansi-font-family: Times-Roman;&quot;&gt;繼承&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 132.55pt;&quot; valign=&quot;top&quot; width=&quot;177&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-align: center; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Protected&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: black; font-family: TT541o00; line-height: 50%; mso-bidi-font-family: TT541o00; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-hansi-font-family: Times-Roman;&quot;&gt;繼承&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 128.3pt;&quot; valign=&quot;top&quot; width=&quot;171&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-char-indent-count: 1.2; mso-layout-grid-align: none; text-align: center; text-autospace: none; text-indent: 14.4pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center; text-indent: 14.4pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; text-align: center; text-indent: 14.4pt;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Private&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: black; font-family: TT541o00; line-height: 50%; mso-bidi-font-family: TT541o00; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-hansi-font-family: Times-Roman;&quot;&gt;繼承&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;height: 34.0pt; mso-yfti-irow: 2; page-break-inside: avoid;&quot;&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 60.15pt;&quot; valign=&quot;top&quot; width=&quot;80&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Public&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.95pt;&quot; valign=&quot;top&quot; width=&quot;197&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;Public&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Member function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;non-member function(&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;外部函式&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 132.55pt;&quot; valign=&quot;top&quot; width=&quot;177&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #c0504d; mso-themecolor: accent2;&quot;&gt;Protected&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Member &lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=1536207310096707015&quot; name=&quot;OLE_LINK2&quot;&gt;function&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 128.3pt;&quot; valign=&quot;top&quot; width=&quot;171&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #9bbb59; mso-themecolor: accent3;&quot;&gt;Private&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Member function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;height: 34.0pt; mso-yfti-irow: 3; page-break-inside: avoid;&quot;&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 60.15pt;&quot; valign=&quot;top&quot; width=&quot;80&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Protected&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.95pt;&quot; valign=&quot;top&quot; width=&quot;197&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #c0504d; mso-themecolor: accent2;&quot;&gt;Protected&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Member function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 132.55pt;&quot; valign=&quot;top&quot; width=&quot;177&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #c0504d; mso-themecolor: accent2;&quot;&gt;Protected&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Member function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 128.3pt;&quot; valign=&quot;top&quot; width=&quot;171&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #9bbb59; mso-themecolor: accent3;&quot;&gt;Private&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;friend function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;member function&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可直接存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;height: 34.0pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes; page-break-inside: avoid;&quot;&gt;   &lt;td style=&quot;background: #4F81BD; border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-background-themecolor: accent1; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 60.15pt;&quot; valign=&quot;top&quot; width=&quot;80&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 50%;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: Helvetica-Bold; line-height: 50%;&quot;&gt;Private&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.95pt;&quot; valign=&quot;top&quot; width=&quot;197&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=1536207310096707015&quot; name=&quot;OLE_LINK6&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=1536207310096707015&quot; name=&quot;OLE_LINK5&quot;&gt;&lt;span style=&quot;mso-bookmark: OLE_LINK6;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: grey; mso-themecolor: background1; mso-themeshade: 128;&quot;&gt;Hidden&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可藉由基礎類別&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;或&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;protect&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的成員函數存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; member   function &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;及&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;friend function &lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 132.55pt;&quot; valign=&quot;top&quot; width=&quot;177&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: grey; mso-themecolor: background1; mso-themeshade: 128;&quot;&gt;Hidden&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可藉由基礎類別&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;或&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;protect&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的成員函數存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; member   function &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;及&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;friend function &lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 34.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 128.3pt;&quot; valign=&quot;top&quot; width=&quot;171&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: grey; mso-themecolor: background1; mso-themeshade: 128;&quot;&gt;Hidden&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;可藉由基礎類別&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;或&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;protect&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;的成員函數存取&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; member   function &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 新細明體; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;&quot;&gt;及&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;friend function &lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;embed height=&quot;0&quot; hidden=&quot;true&quot; id=&quot;lingoes_plugin_object&quot; type=&quot;application/lingoes-npruntime-capture-word-plugin&quot; width=&quot;0&quot;&gt;&lt;/embed&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/8095139117579842519/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/12/public-private-and-protected.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/8095139117579842519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/8095139117579842519'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/12/public-private-and-protected.html' title='Public, Private, and Protected 繼承'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-594718552762967102</id><published>2011-12-05T22:47:00.000-08:00</published><updated>2015-12-30T16:40:41.855-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>類別的繼承與指標應用</title><content type='html'>&lt;div class=&quot;bar_black&quot; style=&quot;width: 300px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;bar_gray&quot; style=&quot;width: 200px;&quot;&gt;
甚麼是繼承(inherit)?&lt;/div&gt;
C++繼承是一種抽象的概念，有點將軟體元件(類別)擬人化的味道，先就字面意義來說，繼承是一種父子關係，宣告子類別指定繼承自某父類別意即子類別擁有父類別的特徵，在  C++ 語言中的具體表現是子類別可以使用父類別的所有 public 與 protected 資料成員與函式成員。&lt;br /&gt;
繼承的另一層面意義是「世襲」，子類別可以世襲父類別的位置意即子類別可以在系統中扮演父類別的角色，在 C++  語言中的具體表現是父類別的指標可以指向子類別的 instance，易言之，在一套軟體當中，經過前面幾篇的介紹，你可以想像得到以 C++  撰寫的軟體系統，經常設計了許許多多的類別，然後宣告或 new 出這些類別的 instance 來使用、串連、傳遞。例如前一篇的  &lt;a href=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/samples/GradeClass.zip&quot;&gt;Grade Class&lt;/a&gt;&amp;nbsp; 範例當中我們設計了  GradeList 類別來提供班級的成績儲存與計算，並在 UserApplication.app 中使用它的 instance  來裝載資料，由於 C  語言的繼承特性，就算我們在設計這套系統的時候並不知道日後會有哪些新類別的存在，後來開發的新類別只要繼承自原來既有的類別，它們的  instance 也能夠在系統上被使用，舊系統不用改一行程式碼，例如本篇的  &lt;a href=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/samples/GradeSheet.zip&quot;&gt;Grade Sheet&lt;/a&gt; 範例，我們設計了繼承自  GradeList 類別的 GradeSheet 類別，那麼它的 instance 也能夠在原來的  UserApplication.app 使用。&lt;br /&gt;
繼承的語法僅是在設計新類別的時候，在新的子類別名稱後面以 :  號指定以甚麼樣的權限繼承自哪個父類別，如下所示，父類別也稱為子類別的基礎類別(base  class)，子類別也稱為父類別的衍生類別(derived class)。&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;class 子類別名稱 : &lt;span style=&quot;color: navy;&quot;&gt;繼承權限  父類別名稱&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...子類別宣告...&lt;br /&gt;
};&lt;/span&gt;&lt;br /&gt;
繼承權限也分為 public 或protected 或 private  三種，它們會決定父類別中的資料與函式成員在這個子類別中的授權程度，最常見 public  繼承就是父類別的成員在子類別中都還是維持原權限，而 private 繼承則讓父類別的成員不能再讓被子類別的子類別繼承，以下是一個  public 繼承的例子，左邊的 GradeList 類別是&lt;a href=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/class.htm&quot;&gt;前篇&lt;/a&gt;的範例，內容是一個班級的教師名稱、學生成績(動態陣列)、以及學生人數，右邊的  GradeSheet 類別繼承自 GradeList，所以 GradeSheet 類別已經擁有了 GradeList  所有的資料和函式成員，它只有再增加一個 index 代表班級的編號。&lt;br /&gt;
&lt;table border=&quot;0&quot; id=&quot;table1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;th class=&quot;form_text&quot;&gt;GradeList.h&lt;/th&gt;   &lt;th class=&quot;form_text&quot;&gt;GradeSheet.h&lt;/th&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td class=&quot;form_text&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;class GradeList
{
   public:
   struct GRADE
    {   int id; 
        float value;  };

   char teacher[16]; 
   GRADE * grade; 
   int students;  

   ...函式成員宣告...
};     &lt;/pre&gt;
&lt;/td&gt;      &lt;td class=&quot;form_text&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;class GradeSheet : &lt;b&gt;&lt;span style=&quot;color: navy;&quot;&gt;public GradeList&lt;/span&gt;&lt;/b&gt;
{
    public:
    int index;

   ...函式成員宣告...
};　     &lt;/pre&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
在這個例子當中，讓我們觀察父子類別 GradeList 與 GradeSheet 在記憶體中的儲存狀況，你可以看到，由於  GradeSheet 繼承自 GradeList 類別，所以編譯器直接給了它一份父類別 GradeList 的記憶體布局(memory  layout)，然後把子類別新增加的 index 附加在後面，無怪乎父類別 GradeList * 指標也可以用來存取子類別的  instance。&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/figures/inherit.gif&quot; /&gt;&lt;br /&gt;
註: 這個簡單的例子是因為 GradeList 與 GradeSheet 都沒有虛擬函式(virtual function)，而且  GradeSheet  乃是單一繼承的子類別，記憶體才會如此單純，有虛擬函式或多重繼承(一個子類別有兩個以上的父類別)的記憶體布局較為複雜，但原理大同小異。&lt;br /&gt;
從這個例子我們可以知道類別繼承的效果之一就是子類別的結構包含父類別的結構，所以父類別的指標可以指向子類別的  instance。上面的例子是公開繼承，所以 GradeSheet 原封不動地接收了 GradeList 的資料與函式成員，也就是  GradeSheet 的 instance 完全可以被當作是一個 GradeList 的 instance  來使用，其他繼承權限的效果如下所述，可以營造出不同的效果。&lt;br /&gt;
&lt;h4&gt;
公開繼承 &lt;span style=&quot;font-size: x-small;&quot;&gt;(例如 class GradeSheet : public GradeList)&lt;/span&gt;&lt;/h4&gt;
子類別繼承的資料與函式成員保持父類別的權限，public 還是 public, protected 還是 protected。&lt;br /&gt;
&lt;h4&gt;
保護繼承&lt;span style=&quot;font-size: x-small;&quot;&gt; (例如 class GradeSheet : protected GradeList)&lt;/span&gt;&lt;/h4&gt;
子類別繼承的資料與函式成員都變成保護的成員，public 變成 protected, protected 還是  protected。&lt;br /&gt;
&lt;h4&gt;
私有繼承 &lt;span style=&quot;font-size: x-small;&quot;&gt;(例如 class GradeSheet : private GradeList)&lt;/span&gt;&lt;/h4&gt;
子類別繼承的資料與函式成員都變成私有的成員，public 變成 private, protected 也變成  private，讓父類別的成員無法再被繼承。&lt;br /&gt;
&lt;div class=&quot;bar_gray&quot; style=&quot;width: 200px;&quot;&gt;
子類別的建構與解構&lt;/div&gt;
在&lt;a href=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/constructor.htm&quot;&gt;前篇&lt;/a&gt;提 到，建構函式和解構函式是類別的 instance  會自動執行的初始化與清理行為，當類別之間有繼承的父子關係的時候，理應執行父子類別的建構函式和解構函式，以保證不論是父類別或子類別的資料成員都會正 確地被初始化或清理，然而執行的順序會攸關這個行為的正確與否，還好編譯器會自動地做好了完善的安排。讓我們看下面這個實驗例子，當中父子類別的建構函式 和解構函式都包含有  printf( ) 述句，所以我們可以藉由觀察執行結果得知它們執行的順序。&lt;br /&gt;
&lt;pre&gt;GradeList::GradeList()
{  printf(&quot;GradeList::GradeList()\n&quot;);  }

GradeList::~GradeList()
{  printf(&quot;GradeList::~GradeList()\n&quot;);  }

GradeSheet::GradeSheet()
{  printf(&quot;GradeSheet::GradeSheet()\n&quot;);  }

GradeSheet::~GradeSheet()
{  printf(&quot;GradeSheet::~GradeSheet()\n&quot;);  }

void main()
{  GradeSheet sheet;  }&lt;/pre&gt;
執行結果是:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;GradeList::GradeList()&lt;br /&gt;
GradeSheet::GradeSheet()&lt;br /&gt;
GradeSheet::~GradeSheet()&lt;br /&gt;
GradeList::~GradeList()&lt;/span&gt;&lt;br /&gt;
所以我們可以得到結論如下：&lt;br /&gt;
&lt;h4&gt;
建構順序是 父→子&lt;/h4&gt;
先執行父類別的建構函式，再執行子類別的建構函式。&lt;br /&gt;
&lt;h4&gt;
解構順序是 子→父&lt;/h4&gt;
先執行子類別的解構函式，再執行父類別的解構函式。&lt;br /&gt;
道理很簡單，子類別建構函式當中可能去使用父類別的資料成員，甚至更改它的初始值，所以父類別的建構函式理應先執行，才能夠準備好以初始化的資料成員讓子 類別使用。而解構函式則相反，因為子類別在解構函式當中仍可能去使用父類別的資料成員，所以在那當下還不能夠清理掉父類別的資料成員，所以子類別的解構函 式理應先執行，最後才執行父類別的解構函式。&lt;br /&gt;
&lt;div class=&quot;bar_gray&quot; style=&quot;width: 200px;&quot;&gt;
is a 與 has a 的概念&lt;/div&gt;
這是在 C++ 的教學與探討書籍中經常會宣揚的觀念，繼承是一種 is-a 關係(子類別是一種父類別)，所以子類別有兩個重要的性質:  1. 子類別也具有父類別的特徵(意指資料與函式成員)，2. 子類別也可以被當作父類別使用。類別之間的另一種相比較的關係是 has-a  關係，某個 A 類別 has a B&amp;nbsp; 類別說穿了只不過是 A 類別的資料成員裡面有一個 B 的 instance  罷了，你可以把 A 稱為 B 的容器類別，如下面例子所示。&lt;br /&gt;
&lt;table border=&quot;0&quot; id=&quot;table2&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;th class=&quot;form_text&quot;&gt;GradeSheet &lt;span style=&quot;color: navy;&quot;&gt;is a&lt;/span&gt;    GradeList&lt;/th&gt;   &lt;th class=&quot;form_text&quot;&gt;Course &lt;span style=&quot;color: navy;&quot;&gt;has a&lt;/span&gt;    GradeList&lt;/th&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td class=&quot;form_text&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;class GradeList
{
    public:
    char teacher[16]; 
    GRADE * grade; 
    int students; 

    ...函式成員宣告...
};

class GradeSheet : public GradeList
{
    public:
    int index;

    ...函式成員宣告...
};     &lt;/pre&gt;
&lt;/td&gt;      &lt;td class=&quot;form_text&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;class GradeList
{
    public:
    char teacher[16]; 
    GRADE * grade; 
    int students; 

    ...函式成員宣告...
};

class Course
{
   public:
   char name[16];
   GradeList list;

   ...函式成員宣告...
};　     &lt;/pre&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
在這個例子當中，GradeSheet is a GradeList 的意義是成績報表(grade  sheet)也是一種成績清單(grade list)，在實務上的意義是 GradeSheet 承襲了 GradeList的記憶體佈局，而  Course has a GradeList 的意義是課程資料(Course)包括了成績清單(grade list)，在實務上的意義是  Course 包括了 GradeList的資料，兩者有甚麼差異呢？首先請看 GradeList、GradeSheet、Course  這三者的記憶體布局，由於GradeSheet 繼承自 GradeList，所以它自己的 index 資料成員附加在 GradeList  的資料成員之後，而 Course 類別同樣也包含了 GradeList 的資料，但它在記憶體中的位置則依宣告順序而定。&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/figures/isa_hasa.gif&quot; height=&quot;326&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;
接下來看建構函式和解構函式的執行順序，我們同樣以一段程式碼做實驗：&lt;br /&gt;
&lt;pre&gt;GradeList::GradeList()
{  printf(&quot;GradeList::GradeList()\n&quot;);  }

GradeList::~GradeList()
{  printf(&quot;GradeList::~GradeList()\n&quot;);  }

Course::Course()
{  printf(&quot;Course::Course()\n&quot;);  }

Course::~Course()
{  printf(&quot;Course::~Course()\n&quot;);  }

void main()
{  Course course; }&lt;/pre&gt;
執行結果如下：&lt;br /&gt;
&lt;pre&gt;GradeList::GradeList()
Course::Course()
Course::~Course()
GradeList::~GradeList()&lt;/pre&gt;
結果是 has-a  這種關係，容器類別建構函式當中可能去使用資料成員，所以成員的建構函式理應先執行，才能夠準備好以初始化的資料成員讓容器類別使用。而解構函式則相反，因為容器類別在解構函式當中仍可能去使用資料成員，所以容器類別的解構函式理應先執行，最後才執行成員的解構函式。&lt;br /&gt;
&lt;h4&gt;
建構順序是: 成員→容器&lt;/h4&gt;
先執行成員類別的建構函式，再執行容器類別的建構函式。&lt;br /&gt;
&lt;h4&gt;
解構順序是: 容器→成員&lt;/h4&gt;
先執行容器類別的解構函式，再執行成員類別的解構函式。&lt;br /&gt;
&lt;div class=&quot;bar_gray&quot; style=&quot;width: 200px;&quot;&gt;
使用父類別的指標&lt;/div&gt;
前面一再提到類別繼承的意義在於，子類別也具有父類別的特徵(意指資料與函式成員)，以及子類別也可以被當作父類別使用，例子如下，子類別可使用父類別的資料與函式：&lt;br /&gt;
&lt;pre&gt;void main(void)
{
    &lt;span style=&quot;color: green;&quot;&gt;// 宣告一個GradeSheet 類別的instance:&lt;/span&gt;
    GradeSheet sheet;

    &lt;span style=&quot;color: green;&quot;&gt;// 使用 GradeList 和 GradeSheet 的資料成員:&lt;/span&gt;
    printf(&quot; School: %s\n&quot;, GradeList::school);
    sheet.index = 5;
    printf(&quot; Sheet index: %d\n&quot;, sheet.index);

    &lt;span style=&quot;color: green;&quot;&gt;// GradeSheet 使用 GradeList 的函式成員：&lt;/span&gt;
    sheet.adjust_grade_list(); 
    sheet.sort_grade_list();
}&lt;/pre&gt;
在這個例子當中，你可以看到 main( ) 當中根本就把 GradeSheet 的 instance 當作 GradeList  使用，但若僅僅如此，你仍然得把原程式碼當中宣告使用 GradeList instance 的部分都改為宣告 GradeSheet  instance，所以要發揮繼承的優點，你應該盡量用父類別的指標來撰寫程式，如下例：&lt;br /&gt;
&lt;pre&gt;void main(void)
{
    &lt;span style=&quot;color: green;&quot;&gt;// 宣告一個 GradeSheet 類別的 instance:&lt;/span&gt;
    GradeSheet sheet;

    &lt;span style=&quot;color: green;&quot;&gt;// 用一個 GradeList 指標去指向這個 instance:&lt;/span&gt;
    GradeList * ptr = &amp;amp;sheet;

    &lt;span style=&quot;color: green;&quot;&gt;// 透過 GradeList * 指標來使用此 instance：&lt;/span&gt;
    ptr-&amp;gt;adjust_grade_list();
    ptr-&amp;gt;sort_grade_list();
}&lt;/pre&gt;
用父類別的指標來寫程式有甚麼好處？以下面的校務系統為例，在設計的時候，系統的行為完全是由父類別的指標所組成的，所以開發的時候不需要知道衍生類別的設計，新類別自然可參與舊系統，從這個例子你也可以看到，C++  中的繼承代表了&lt;b&gt;向後的擴充性&lt;/b&gt;。&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;color: green;&quot;&gt;// 假設這三個類別都繼承 GradeList:&lt;/span&gt;
GradeSheet *pSheet = new GradeSheet();
OtherSheet *pOther = new OtherSheet();
SpecialSheet *pSpecial = new SpecialSheet();
...其他衍生類別的 instance...

&lt;span style=&quot;color: green;&quot;&gt;// 用父類別指標陣列來裝子類別instances 的指標:&lt;/span&gt;
GradeList * pList[10];
pList[0] = pSheet;
pList[1] = pOther;
pList[2] = pSpecial;
pList[3] = ...;

&lt;span style=&quot;color: green;&quot;&gt;// 假設校務系統的設計是呼叫所有班級的分數調整函式:&lt;/span&gt;
for (int i=0; i&amp;lt;10; ++i)
{
    pList[i]-&amp;gt;adjust_grade_list();
}&lt;/pre&gt;
透過 C++ 的繼承語法和父類別指標的使用，設計父類別的時候，不需要知道子類別的設計，但是子類別可以參與父類別的 frame  work。設計子類別的時候，可以重複使用父類別的設計，而且透過繼承的方式，設計子類別的時候不需要更動父類別的程式碼，可說是最佳的程式碼  reuse 方式。&lt;br /&gt;
&lt;br /&gt;
資料來源: &lt;a href=&quot;http://www.csie.nctu.edu.tw/%7Eskyang/inherit.zhtw.htm&quot;&gt;http://www.csie.nctu.edu.tw/~skyang/inherit.zhtw.htm &lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;embed height=&quot;0&quot; hidden=&quot;true&quot; id=&quot;lingoes_plugin_object&quot; type=&quot;application/lingoes-npruntime-capture-word-plugin&quot; width=&quot;0&quot;&gt;&lt;/embed&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/594718552762967102/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/12/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/594718552762967102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/594718552762967102'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/12/blog-post.html' title='類別的繼承與指標應用'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-5635060264908977759</id><published>2011-11-30T00:43:00.000-08:00</published><updated>2015-12-30T16:41:40.233-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>如何使用Operator Overloading? (C/C++)</title><content type='html'>&lt;a href=&quot;http://www.cnblogs.com/oomusou/archive/2007/01/18/623287.html&quot;&gt;http://www.cnblogs.com/oomusou/archive/2007/01/18/623287.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;embed height=&quot;0&quot; hidden=&quot;true&quot; id=&quot;lingoes_plugin_object&quot; type=&quot;application/lingoes-npruntime-capture-word-plugin&quot; width=&quot;0&quot;&gt;&lt;/embed&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/5635060264908977759/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/11/operator-overloading-cc.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/5635060264908977759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/5635060264908977759'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/11/operator-overloading-cc.html' title='如何使用Operator Overloading? (C/C++)'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-1208932713177776776</id><published>2011-10-25T00:10:00.000-07:00</published><updated>2015-12-30T16:42:19.405-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>容易混淆的const with point</title><content type='html'>&lt;span style=&quot;font-size: large;&quot;&gt;const宣告的變數，被const宣告的變數一但被指定值，就不能再改變變數的值，您也無法對該變數如下取值：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;const int var = 10;&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;var = 20; // error,&amp;nbsp;assignment of read-only variable `var&#39; &lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;int *ptr = &amp;amp;var; // error,&amp;nbsp; invalid conversion from `const int*&#39; to `int*&#39; &lt;/span&gt;&lt;/span&gt;&lt;strike style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/strike&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strike style=&quot;color: red;&quot;&gt;             &lt;/strike&gt;&lt;br /&gt;
用const宣告的變數，必須使用對應的const型態指標才可以：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;const int var = 10;&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;const int *vptr = &amp;amp;var;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
同樣的vptr所指向的記憶體中的值一但指定，就不能再改變記憶體中的值，您不能如下試圖改變所指向記憶體中的資料：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;color: red; margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;*vptr = 20; // error, assignment of read-only location &lt;/span&gt;&lt;strike&gt;&lt;br /&gt;
&lt;/strike&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strike&gt;&lt;span style=&quot;color: red;&quot;&gt;             &lt;/span&gt;&lt;/strike&gt;&lt;br /&gt;
另外還有指標常數，也就是您一旦指定給指標值，就不能指定新的記憶體位址值給它，例如：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;int x = 10;&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt; int y = 20;&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt; int* const vptr = &amp;amp;x;&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt; &lt;span style=&quot;color: red;&quot;&gt;vptr = &amp;amp;x; &amp;nbsp;// error,&amp;nbsp; assignment of read-only variable `vptr&#39; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt; 在某些情況下，您會想要改變唯讀區域的值，這時您可以使用const_cast改變指標的型態，例如：&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: large;&quot;&gt;#include &amp;lt;iostream&amp;gt; 
using namespace std; 

void foo(const int*); 
 
int main() { 
    int var = 10; 
 
    cout &amp;lt;&amp;lt; &quot;var = &quot; &amp;lt;&amp;lt; var &amp;lt;&amp;lt; endl; 
 
    foo(&amp;amp;var); 
 
    cout &amp;lt;&amp;lt; &quot;var = &quot; &amp;lt;&amp;lt; var &amp;lt;&amp;lt; endl; 
 
    return 0; 
}

void foo(const int* p) {
    int* v = const_cast&amp;lt;int*&amp;gt; (p); 
    *v = 20; 
}&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt; 由於函式（Function）定義中傳入的指標使用const加上唯讀性，所以您不能對傳入的指標進行以下的動作：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;*p = 20; // error, assignment of read-only location&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
但在某種原因下，您真的必須改變指標指向的位址處之資料，則您可以使用const_cast改變指標的唯讀性，&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;int* v = const_cast&amp;lt;int*&amp;gt; (p); &lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;*v = 20; &lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
執行結果： &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;                 &lt;/span&gt;                                          &lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;text-align: left; width: 100%;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;                   &lt;td style=&quot;background-color: black;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;var = 10&lt;br /&gt;
var = 20&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;                 &lt;/tr&gt;
&lt;/tbody&gt;                                          &lt;/table&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt; 您也可以使用舊風格的轉型語法，例如：&lt;br /&gt;
&lt;/span&gt;                                          &lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;void foo(const int* p) {&lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int* v = (int*) (p); &lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *v = 20; &lt;/span&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;             &lt;span style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;// Attempting to modify a constant pointer to nonconstant data.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;int main()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x, y;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ptr is a constant pointer to an integer that can&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // be modified through ptr, but ptr always points to the&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // same memory location.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; int * const ptr = &amp;amp;x; // const pointer must be initialized&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;*ptr = 7; // allowed: *ptr is not const&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptr = &amp;amp;y; // error: ptr is const; cannot assign to it a new address&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;} // end main&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;// Attempting to modify a constant pointer to constant data.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;using namespace std;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;int main()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x = 5, y;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ptr is a constant pointer to a constant integer.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ptr always points to the same location; the integer&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // at that location cannot be modified.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int *const ptr = &amp;amp;x;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; *ptr &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ptr = 7; // error: *ptr is const; cannot assign new value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptr = &amp;amp;y; // error: ptr is const; cannot assign new address&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;} // end main&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/1208932713177776776/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/10/const-point.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1208932713177776776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1208932713177776776'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/10/const-point.html' title='容易混淆的const with point'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-7742106774692079485</id><published>2011-09-22T20:18:00.000-07:00</published><updated>2015-12-30T16:42:46.336-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>資訊隱藏的障礙</title><content type='html'>1. 資訊過份分散：&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;如直接將100這個數字當成程式碼，將100當成常值，將導致對它的參數過度分散，最好將此部份的資訊隱藏起來，例如：寫入稱為MAX_EMPLOYESS的常數中，僅對於一處對其直進行變更。&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;最好將與使用者的互動集中在單獨的類別、封裝或系統中。&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
2. 循環相依性：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ex. A類別的常式呼叫了B類別的常式，B類別的常式又呼叫了A類別的常式。應該避免形成這種依賴的迴圈&lt;/li&gt;
&lt;/ul&gt;
3. 將類別資料誤認為全域資料&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;全域資料通常受到兩種問題影響：&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;常式在全域資料上操作，但卻不知道還有其他常式也正用這些全域資料操作。&lt;/li&gt;
&lt;li&gt;常式知道其他常式正用全域資料進行操作，但卻無法清楚知道它們所進行的操作。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;類別資料就不會遇到這些問題，因為只有類別內的&lt;span style=&quot;color: blue;&quot;&gt;少數常數&lt;/span&gt;才能直接存取這些資料。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
4. 可察覺的效能減損</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/7742106774692079485/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post_22.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7742106774692079485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/7742106774692079485'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post_22.html' title='資訊隱藏的障礙'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-1694996335044289255</id><published>2011-09-21T20:25:00.000-07:00</published><updated>2015-12-30T16:43:45.062-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>軟體分層設計的益處</title><content type='html'>1. 可區分文亂的劣等程式碼 。&lt;br /&gt;
2. 若最終能捨棄就程式碼或進行重整，除介面層外，將不必修改新程式碼。</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/1694996335044289255/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post_21.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1694996335044289255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1694996335044289255'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post_21.html' title='軟體分層設計的益處'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-937962970402835718</id><published>2011-09-20T20:15:00.000-07:00</published><updated>2015-12-30T16:48:03.882-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>上游的前置作業：依照程式前置作業所需完備度 選擇使用重複法或循序法</title><content type='html'>1. 選擇使用循序性的方法&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;需求相當穩定時。&lt;/li&gt;
&lt;li&gt;設計是平鋪直敘，且相當容易瞭解。&lt;/li&gt;
&lt;li&gt;開發團隊十分熟悉該應用領域。&lt;/li&gt;
&lt;li&gt;專案所含風險極少。&lt;/li&gt;
&lt;li&gt;長期的可預測性十分重要。&lt;/li&gt;
&lt;li&gt;在下遊階段變更需求、設計及程式碼的成本可能會很高。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
2. 選擇使用重複性的方法&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;需求不易瞭解，或因為其他原因，您預期它們會不穩定。&lt;/li&gt;
&lt;li&gt;設計很複雜、很艱難，或兩者皆有。&lt;/li&gt;
&lt;li&gt;開發團隊十分不熟悉該應用領域。&lt;/li&gt;
&lt;li&gt;專案含有大量風險&lt;/li&gt;
&lt;li&gt;長期的可預測性不重要。&lt;/li&gt;
&lt;li&gt;在下遊階段變更需求、設計及程式碼的成本可能不會很高。&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
由於軟體本身的性質使然，重複法通常會比循序法更有用。&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/937962970402835718/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/937962970402835718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/937962970402835718'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/09/blog-post.html' title='上游的前置作業：依照程式前置作業所需完備度 選擇使用重複法或循序法'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-1197470156348547977</id><published>2011-09-09T00:39:00.000-07:00</published><updated>2015-12-30T16:48:22.617-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c/c++"/><title type='text'>c 分析命令列參數</title><content type='html'>標頭檔: unistd.h&lt;br /&gt;
&lt;br /&gt;
原型:&lt;br /&gt;
&lt;pre&gt;int getopt(int argc, char * const argv[], const char *optstring);&lt;/pre&gt;
說明:&lt;br /&gt;
&lt;blockquote&gt;
用來分析命令列參數，引數argc和argv是由 main()傳遞的參數個數和內容。&lt;br /&gt;
參數 optstring 是有效選項（字母)。如 &quot; a:bf&quot;。代表要接受的option有 -a, -b, -f。&lt;br /&gt;
其中option a的後面是&lt;span style=&quot;color: blue;&quot;&gt;&quot;:&quot;號，代表-a option後還有參數&lt;/span&gt;（例如-aext2)。 &lt;/blockquote&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getopt提供三個global variable :&lt;br /&gt;
&lt;div style=&quot;color: blue;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; optarg: 像a:這樣的參數，getopt會將-a後面的字串放到optarg中。&lt;/div&gt;
&lt;div style=&quot;color: blue;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; optopt: 有額外參數時，optopt 會儲存option，如果getopt()找不到符合的參數則會&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 列印錯誤，並將全域變數optopt設為&#39;?&#39;字元。&lt;/div&gt;
&lt;div style=&quot;color: blue;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opterr: 如果不希望getopt()印出錯誤訊息則只要將全域變數opterr設為0即可。&lt;/div&gt;
&lt;br /&gt;
傳回值:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; 參數字母&lt;/span&gt;: 如果找到符合的參數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; &#39;?&#39;&lt;/span&gt;:&amp;nbsp; 如果參數不包含在引數optstring 的選項字母&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;-1&lt;/span&gt;:&amp;nbsp; 分析結束&lt;br /&gt;
&lt;br /&gt;
範例:&lt;br /&gt;
&lt;pre&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int main(int argc, char *argv[])
{
  int ch;
&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; opterr = 0;&lt;/span&gt; //不印出錯誤訊息&lt;/pre&gt;
&lt;pre&gt;while((ch=getopt(argc,argv,&quot;a:cef&quot;))!=-1)
  switch(ch)
 {
  case &#39;a&#39;:
     printf(&quot;choose a: %s\n&quot;,optarg);
     break;
  case &#39;c&#39;:
     printf(&quot;option c\n&quot;);
     break;
  case &#39;f&#39;:
    printf(&quot;option f\n&quot;);
    break;
  default:
    printf(&quot;other option: %c\n&quot;,ch);
    break;

 }&lt;/pre&gt;
&lt;pre&gt;printf(&quot;optopt = %c\n&quot;,optopt);
}&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;結果:&lt;/pre&gt;
&lt;pre&gt;[root@localhost shelltest]# ./test -acef   
choose a: cef
optopt = 
[root@localhost shelltest]# ./test -a   
other option: ?
optopt = a &lt;/pre&gt;
[root@localhost shelltest]# ./test -aaa&lt;br /&gt;
choose a: aa&lt;br /&gt;
optopt = &lt;br /&gt;
[root@localhost shelltest]# ./test -c &lt;br /&gt;
option c&lt;br /&gt;
optopt = &lt;br /&gt;
[root@localhost shelltest]# ./test -cc&lt;br /&gt;
option c&lt;br /&gt;
option c&lt;br /&gt;
optopt =&lt;br /&gt;
source code &lt;a href=&quot;http://opencobol.add1tocobol.com/doxy/dc/d53/getopt_8c.html&quot;&gt;http://opencobol.add1tocobol.com/doxy/dc/d53/getopt_8c.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/1197470156348547977/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/09/c.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1197470156348547977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/1197470156348547977'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/09/c.html' title='c 分析命令列參數'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1536207310096707015.post-6479612269616823945</id><published>2011-09-07T19:50:00.000-07:00</published><updated>2011-09-07T19:50:48.382-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="shell script po文測試標籤"/><title type='text'>shell script po文測試標題</title><content type='html'>一 基本觀念&lt;br /&gt;
1. 回應目前所使用的shell為何?&lt;br /&gt;
&amp;nbsp; $echo $SHELL&lt;br /&gt;
2. 通配符號&lt;br /&gt;
&amp;nbsp; ? 任何一個字符&lt;br /&gt;
&amp;nbsp; * 任何字符(一串字符)&lt;br /&gt;
&amp;nbsp; [set] 在set中的任何字符&lt;br /&gt;
&amp;nbsp; [!set] 不在set中的任何字符&lt;br /&gt;
3. 大括弧擴展&lt;br /&gt;
&amp;nbsp; {,{,},}&lt;br /&gt;
&amp;nbsp; ex. echo b{ed,olt,ar}s&amp;nbsp;&amp;nbsp; 結果列印 beds bolts bars&lt;br /&gt;
&amp;nbsp; ex. echo b{ar{d,n,k},ed}s 結果列印bards barns barks beds&lt;br /&gt;
&amp;nbsp; ex. echo {d..h} 結果看到 d e f g h&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; 至少要有一個逗號 否則所產生的單字會維持原狀 ex. b{o}lt 還是被當成b{o}lt&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
4. 背景執行&lt;br /&gt;
&amp;nbsp; 指令後面加&amp;amp;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
5. 檢視背景執行&lt;br /&gt;
&amp;nbsp; $jobs&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
6. nice command&lt;br /&gt;
&amp;nbsp; $nice command&lt;br /&gt;
&amp;nbsp; command 以比較低的優先權處理&lt;br /&gt;
7. 特殊字符與加引號&lt;br /&gt;
&amp;nbsp; ~ 主目錄&lt;br /&gt;
&amp;nbsp; ` 命令替換(舊式)&lt;br /&gt;
&amp;nbsp; # 註解&lt;br /&gt;
&amp;nbsp; $ 變數表示示&lt;br /&gt;
&amp;nbsp; &amp;amp; 背景工作&lt;br /&gt;
&amp;nbsp; * 字串通配符&lt;br /&gt;
&amp;nbsp; ( 啟動subshell&lt;br /&gt;
&amp;nbsp; ) 終止subshell&lt;br /&gt;
&amp;nbsp; \ 引述下一個字符&lt;br /&gt;
&amp;nbsp; | 導管&lt;br /&gt;
&amp;nbsp; [ 起始字符集通配符&lt;br /&gt;
&amp;nbsp; ] 終止字符集通配符&lt;br /&gt;
&amp;nbsp; { 起始命令區塊&lt;br /&gt;
&amp;nbsp; } 終止命令區塊&lt;br /&gt;
&amp;nbsp; ; shell命令之區隔符&lt;br /&gt;
&amp;nbsp; &#39; 強引號&lt;br /&gt;
&amp;nbsp; &quot; 弱引號&lt;br /&gt;
&amp;nbsp; &amp;lt; 輸入轉向&lt;br /&gt;
&amp;nbsp; &amp;gt; 輸出轉向&lt;br /&gt;
&amp;nbsp; / 路徑名稱之目錄區隔符&lt;br /&gt;
&amp;nbsp; ? 單字符通配符&lt;br /&gt;
&amp;nbsp; ! 管線之邏輯NOT算符&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
8. 去除特殊字符的字面意義&lt;br /&gt;
&amp;nbsp; a.)加單引號(quoting)---&lt;br /&gt;
&amp;nbsp; 去除特殊字符的字面意義&lt;br /&gt;
&amp;nbsp; ex. $echo &#39;2 * 3 &amp;gt; 5 is a valid inequality.&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; b.)以倒斜線規避&lt;br /&gt;
&amp;nbsp; ex. $echo 2 \* 3 \&amp;gt; 5 is a valid inequality.&lt;br /&gt;
&lt;br /&gt;
9. 控制鍵&lt;br /&gt;
&amp;nbsp; 控制鍵&amp;nbsp;&amp;nbsp;&amp;nbsp; 相應的stty名稱&amp;nbsp;&amp;nbsp;&amp;nbsp; 功能&lt;br /&gt;
&amp;nbsp; ^C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 結束現行命令&lt;br /&gt;
&amp;nbsp; ^D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eof&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 結束輸入&lt;br /&gt;
&amp;nbsp; ^\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 結束現行命令，如果CTRL-C管用的話&lt;br /&gt;
&amp;nbsp; ^S&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 停止輸出到螢幕上&lt;br /&gt;
&amp;nbsp; ^Q&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 開始輸出到螢幕上&lt;br /&gt;
&amp;nbsp; ^?或DEL&amp;nbsp;&amp;nbsp; erase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 刪除最後一個字符&lt;br /&gt;
&amp;nbsp; ^U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 刪除整個命令列&lt;br /&gt;
&amp;nbsp; ^Z/^Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; susp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 暫停現行的命令&lt;br /&gt;
&amp;nbsp; ^W&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; werase&lt;br /&gt;
&amp;nbsp; ^R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rprnt&lt;br /&gt;
&amp;nbsp; ^O&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flush&lt;br /&gt;
&amp;nbsp; ^V&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lnext&lt;br /&gt;
&amp;nbsp; 可以使用stty -a 查看設定&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
二 編輯命令列&lt;br /&gt;
emacs 編輯模式&lt;br /&gt;
1. 基本指令&lt;br /&gt;
^B&amp;nbsp; 將游標往後(backward)移一個字符(不會進行刪除動作)&lt;br /&gt;
^F&amp;nbsp; 將游標往前(forward)移一個字符&lt;br /&gt;
DEL 往後(backward)刪除一個字符&lt;br /&gt;
^D&amp;nbsp; 往前(forward)刪除一個字符&lt;br /&gt;
&lt;br /&gt;
2. 單字處理命令&lt;br /&gt;
ESC-B&amp;nbsp;&amp;nbsp; 將游標往後(backward)移動一個單字&lt;br /&gt;
ESC-F&amp;nbsp;&amp;nbsp; 將游標往前(forward)移動一個單字&amp;nbsp;&amp;nbsp; &lt;br /&gt;
ESC-DEL 往後刪除(kill)一個單字&lt;br /&gt;
ESC-^-H 往後刪除一個單字&lt;br /&gt;
ESC-D&amp;nbsp;&amp;nbsp; 往前刪除一個單字&lt;br /&gt;
^-Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 取回(yank)上一次所刪除的項目&lt;br /&gt;
&lt;br /&gt;
3. 列處理命令&lt;br /&gt;
^-A&amp;nbsp;&amp;nbsp; 移到列的開頭&lt;br /&gt;
^-E&amp;nbsp;&amp;nbsp; 移到列的結尾&lt;br /&gt;
^-K&amp;nbsp;&amp;nbsp; 往前刪除一整列&lt;br /&gt;
&lt;br /&gt;
4. 在歷程檔中遊走&lt;br /&gt;
^-P&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 移到上一頁&lt;br /&gt;
^-N&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 移到下一頁&lt;br /&gt;
^-R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 往回搜尋&lt;br /&gt;
ESC-&amp;lt;&amp;nbsp;&amp;nbsp; 移到歷程的第一列&lt;br /&gt;
ESC-&amp;gt;&amp;nbsp;&amp;nbsp; 移到歷程的最後一列&lt;br /&gt;
&lt;br /&gt;
5. 文字補全&lt;br /&gt;
tab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 試圖進行一般的補全功能&lt;br /&gt;
ESC-?&amp;nbsp;&amp;nbsp; 列出可能的補全結果&lt;br /&gt;
&lt;br /&gt;
ESC-/&amp;nbsp;&amp;nbsp; 試圖補全檔案名稱&lt;br /&gt;
^-X/&amp;nbsp;&amp;nbsp;&amp;nbsp; 列出可能的『檔案名稱』補全結果&lt;br /&gt;
ESC-~&amp;nbsp;&amp;nbsp; 試圖補全用戶名稱&lt;br /&gt;
^-X~&amp;nbsp;&amp;nbsp;&amp;nbsp; 列出可能的『用戶名稱』補全結果&lt;br /&gt;
ESC-$&amp;nbsp;&amp;nbsp; 試圖補全變數&lt;br /&gt;
^-X$&amp;nbsp;&amp;nbsp;&amp;nbsp; 列出可能的變數補全結果&lt;br /&gt;
ESC-@&amp;nbsp;&amp;nbsp; 試圖補全主機名稱&lt;br /&gt;
^-X@&amp;nbsp;&amp;nbsp;&amp;nbsp; 列出可能的『主機名稱』補全結果&lt;br /&gt;
ESC-!&amp;nbsp;&amp;nbsp; 試圖補全命令&lt;br /&gt;
^-X!&amp;nbsp;&amp;nbsp;&amp;nbsp; 列出可能的『命令』補全結果&lt;br /&gt;
ESC-TAB 試圖以歷程紀錄(history list)中之前所鍵入的命令進行補全&lt;br /&gt;
&lt;br /&gt;
6. 雜項命令&lt;br /&gt;
^-J&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同RETURN&lt;br /&gt;
^-L&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 清除螢幕，將現行(current)列置於螢幕頂端&lt;br /&gt;
^-M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同RETURN&lt;br /&gt;
^-O&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同RETURN，但會接著顯示命令歷程中的下一列&lt;br /&gt;
^-T&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 將標點兩邊的字符對調，並將標點向右移動一個位置&lt;br /&gt;
^-U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 刪除從列的開頭到標點為止的部份&lt;br /&gt;
^-V&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 未下一個字符加上引號（規避該字符的特殊意義，如果有特殊意義的話）&lt;br /&gt;
^-[&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同ESC（適用於大多數鍵盤）&lt;br /&gt;
^-C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 將標點右邊的單字(word)換成大寫字母開頭&lt;br /&gt;
^-U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 將標點右邊的單字全部換成大寫字母&lt;br /&gt;
^-L&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 將標點右邊的單字全部換成小寫字母&lt;br /&gt;
ESC-.&amp;nbsp;&amp;nbsp; 在標點右邊插入上一道命令列的最後一個單字&lt;br /&gt;
ESC-_&amp;nbsp;&amp;nbsp; 同ESC-.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vi 編輯模式&lt;br /&gt;
&lt;br /&gt;
0. vi輸入模式的編輯命令&lt;br /&gt;
del&amp;nbsp;&amp;nbsp; 刪除前一個字&lt;br /&gt;
^-w&amp;nbsp;&amp;nbsp; 刪除前一個單字&lt;br /&gt;
^-v&amp;nbsp;&amp;nbsp; 為下一個字符加上引號&lt;br /&gt;
esc&amp;nbsp;&amp;nbsp; 進入控制模式&lt;br /&gt;
&lt;br /&gt;
以下所有命令都可以前置一個數字(n)做為重複次數&lt;br /&gt;
1. 簡單的控制模式命令&lt;br /&gt;
h&amp;nbsp;&amp;nbsp; 往左移一個字 (與編輯時^+H有關)&lt;br /&gt;
l&amp;nbsp;&amp;nbsp; 往右移一個字&lt;br /&gt;
w&amp;nbsp;&amp;nbsp; 往右移一個單字&lt;br /&gt;
b&amp;nbsp;&amp;nbsp; 往左移一個單字&lt;br /&gt;
W&amp;nbsp;&amp;nbsp; 移到下一個非空白單字的開頭&lt;br /&gt;
B&amp;nbsp;&amp;nbsp; 移到前一個非空白單字的開頭&lt;br /&gt;
e&amp;nbsp;&amp;nbsp; 移到現行單字的末端&lt;br /&gt;
E&amp;nbsp;&amp;nbsp; 移到現行非空白單字的末端&lt;br /&gt;
0(zero) 移到一列之首&lt;br /&gt;
^&amp;nbsp;&amp;nbsp; 移到一列之第一個非空白字符&lt;br /&gt;
$&amp;nbsp;&amp;nbsp; 移到一列的的末端&lt;br /&gt;
&lt;br /&gt;
2.&amp;nbsp; 鍵入和更改文字&lt;br /&gt;
&lt;br /&gt;
i&amp;nbsp;&amp;nbsp;&amp;nbsp; 字前插入文字(插入)&lt;br /&gt;
a&amp;nbsp;&amp;nbsp;&amp;nbsp; 字後插入文字(添加)&lt;br /&gt;
I = 0i&amp;nbsp;&amp;nbsp;&amp;nbsp; 列首插入文字&lt;br /&gt;
A = $a&amp;nbsp;&amp;nbsp;&amp;nbsp; 列尾插入文字&lt;br /&gt;
R&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 覆蓋既有文字(Replace in edit mode)&lt;br /&gt;
(n)r&amp;nbsp;&amp;nbsp;&amp;nbsp; 覆蓋既有文字(command)&lt;br /&gt;
&lt;br /&gt;
3. 刪除命令&lt;br /&gt;
用c替代d，會在做完刪除後進入輸入模式&lt;br /&gt;
dh&amp;nbsp;&amp;nbsp;&amp;nbsp; 往左刪除一個字&lt;br /&gt;
dl&amp;nbsp;&amp;nbsp;&amp;nbsp; 往右刪除一個字&lt;br /&gt;
db&amp;nbsp;&amp;nbsp;&amp;nbsp; 往左刪除一個單字&lt;br /&gt;
dw&amp;nbsp;&amp;nbsp;&amp;nbsp; 往右刪除一個單字&lt;br /&gt;
dB&amp;nbsp;&amp;nbsp;&amp;nbsp; 往左刪除一個非空白單字&lt;br /&gt;
dW&amp;nbsp;&amp;nbsp;&amp;nbsp; 往右刪除一個非空白單字&lt;br /&gt;
d$&amp;nbsp;&amp;nbsp;&amp;nbsp; 一直刪除到行尾端&lt;br /&gt;
d0&amp;nbsp;&amp;nbsp;&amp;nbsp; 一直刪除到行開端&lt;br /&gt;
&lt;br /&gt;
D = d$&lt;br /&gt;
dd = 0d$&lt;br /&gt;
C = c$&lt;br /&gt;
cc = 0c$&lt;br /&gt;
X = dh&lt;br /&gt;
x = dl&lt;br /&gt;
&lt;br /&gt;
u&amp;nbsp;&amp;nbsp;&amp;nbsp; undo(undelete)&lt;br /&gt;
.&amp;nbsp;&amp;nbsp;&amp;nbsp; 重複上次文字修改命令&lt;br /&gt;
y(yank)&amp;nbsp;&amp;nbsp;&amp;nbsp; 擷取&lt;br /&gt;
p&amp;nbsp;&amp;nbsp;&amp;nbsp; 文字插入在字的右邊&lt;br /&gt;
P&amp;nbsp;&amp;nbsp;&amp;nbsp; 文字插入在字的左邊&lt;br /&gt;
&lt;br /&gt;
4. 在歷史檔中遊走&lt;br /&gt;
&lt;br /&gt;
k = -&amp;nbsp;&amp;nbsp;&amp;nbsp; 往後移動一列&lt;br /&gt;
j = +&amp;nbsp;&amp;nbsp;&amp;nbsp; 往前移動一列 (與編輯時^+J有關)&lt;br /&gt;
G = gg&amp;nbsp;&amp;nbsp;&amp;nbsp; 移動到重複次數所指定的命令列&lt;br /&gt;
/string&amp;nbsp;&amp;nbsp;&amp;nbsp; 往後搜尋字串string&lt;br /&gt;
?string&amp;nbsp;&amp;nbsp;&amp;nbsp; 往前搜尋字串string&lt;br /&gt;
n&amp;nbsp;&amp;nbsp;&amp;nbsp; 依上次搜尋方向重複搜尋&lt;br /&gt;
N&amp;nbsp;&amp;nbsp;&amp;nbsp; 依上次搜尋反方向重複搜尋&lt;br /&gt;
&lt;br /&gt;
5. 尋找字符命令&lt;br /&gt;
fn&amp;nbsp;&amp;nbsp;&amp;nbsp; 向右移動到下一個n所在位置&lt;br /&gt;
Fn&amp;nbsp;&amp;nbsp;&amp;nbsp; 向左移動到前一個n所在位置&lt;br /&gt;
tn&amp;nbsp;&amp;nbsp;&amp;nbsp; fn+移回一格&lt;br /&gt;
Tn&amp;nbsp;&amp;nbsp;&amp;nbsp; Fn+往前移一格&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
三. 訂製你的環境&lt;br /&gt;
1. 啟動檔: .bash_profile .bash_logout .bashrc&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 登入系統檔案尋找順序(找不到檔案便會往下一個檔案找): .bash_profile -&amp;gt; .bash_login -&amp;gt; .profile&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 離開login shell :會執行.bash_logout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; .bash_profile只會被login shell&amp;nbsp;&amp;nbsp;&amp;nbsp; 所讀取與執行。如果在命令列上以鍵入bash的方式啟動一個新的shell(一個shushell)，它會試圖從.bashrc檔中讀取命令。&lt;br /&gt;
2. 別名:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; alias name=&#39;command&#39; or command&amp;nbsp;&amp;nbsp;&amp;nbsp; //=兩邊不能有空格&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以替別名取另一個別名，也就是別名可以遞迴定義。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; alias listfile=ls&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; alias ls=listfile&amp;nbsp; //那麼別名listfile將會被略過不計。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; bash隱晦功能:如果一個別名的值(等號的右邊部分)是以一個空格結束的，那麼bash便會對命令列的下一個單字進行別名替換。要讓別名的值以空格結束，得要為它加上引號。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; alias name 或 alias : 會列出別名設定。&lt;br /&gt;
3. 選項:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; set -o optionname (開啟option) 和 set +o optionname(關閉option)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1 shopt &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -p 列出可設定的shell選項以及他們目前的設定值。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -s 設定(set)或開啟每個選項名稱。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -u 取消(unset)或關閉每個選項名稱。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -q 抑制正常輸出；傳回狀態會指出一個變數是否有被設定。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -o 允許選項名稱的值成為set命令以-o選項所定義的值。&lt;br /&gt;
&lt;br /&gt;
4. shell變數:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; varname=&#39;value&#39; or value //=兩邊不能有空格&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 變數使用$varname&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 查看變數值 可使用echo $varname&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.1 變數以及加引號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 雙引號裡的特殊字符會被shell解釋&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 單引號裡的特殊字符完全不會遭到shell的解釋&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2 內建變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.1 編輯模式變數&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.2 郵件變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MAIL&amp;nbsp;&amp;nbsp;&amp;nbsp; 郵件檔的名稱，用以檢查有無新收到的郵件&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 郵件檔 /usr/mail/yourname&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 只要設定 MAIL=/usr/mail/yourname 就行了。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MAILCHECK&amp;nbsp;&amp;nbsp;&amp;nbsp; 多久檢查一次新郵件，以秒為單位(預設60秒)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MAILPATH&amp;nbsp;&amp;nbsp;&amp;nbsp; 郵件檔名單，以冒號(:)為分隔符，用來檢查新收到的郵件。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ex. &amp;nbsp;&amp;nbsp;&amp;nbsp; MAILPATH=/usr/mail/you/martin:/usr/mail/you/geoffm:/usr/mail/you/paulr&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; MAILPARH=&quot;\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; /usr/mail/you/martin?you have mail from Martin.:\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; /usr/mail/you/geoffm?Mail from Geoff has arrived.:\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; /usr/mail/you/paulr?There is new mail from Paul.&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $_ 顯示幕前的郵件檔名稱&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.3 提示變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 分別存放在PS1 PS2 PS3 PS4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 提示字串的制定命令&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \a&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCII的響鈴(bell)字符(007)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \A&amp;nbsp;&amp;nbsp;&amp;nbsp; 採用24小時制，以HH:MM的格式來顯示現在的時間&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \d&amp;nbsp;&amp;nbsp;&amp;nbsp; 以Weekday Month Day的格式來顯示日期&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \D{format}&amp;nbsp;&amp;nbsp;&amp;nbsp; format會被傳入strftime(3)，所產生的結果會被插入提示字串；如果format為空值，則會以語系特定的格式來顯示時間&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \e&amp;nbsp;&amp;nbsp;&amp;nbsp; ESC(033)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \H&amp;nbsp;&amp;nbsp;&amp;nbsp; 主機名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \h&amp;nbsp;&amp;nbsp;&amp;nbsp; 主機名稱中第一個.之前的部分&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \j&amp;nbsp;&amp;nbsp;&amp;nbsp; shell目前所控管的工作數量&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \l&amp;nbsp;&amp;nbsp;&amp;nbsp; shell之終機端名稱的基本名稱(basename)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \n&amp;nbsp;&amp;nbsp;&amp;nbsp; LR+LF&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \r&amp;nbsp;&amp;nbsp;&amp;nbsp; LR&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \s&amp;nbsp;&amp;nbsp;&amp;nbsp; shell的名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \T&amp;nbsp;&amp;nbsp;&amp;nbsp; 採用12小時制，以HH:MM:SS的格式來顯示現在的時間&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \t&amp;nbsp;&amp;nbsp;&amp;nbsp; 以HH:MM:SS的格式來顯示現在的時間&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \@&amp;nbsp;&amp;nbsp;&amp;nbsp; 採用12小時制，以am/pm的格式來顯示現在的時間&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \u&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行使用者的用戶名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \v&amp;nbsp;&amp;nbsp;&amp;nbsp; bash的版本 ex.2.00&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \V&amp;nbsp;&amp;nbsp;&amp;nbsp; bash的發行版本；版本和修補次數 ex.2.00.0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \w&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行工作目錄&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \W&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行工作目錄的基本名稱(basename)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \#&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行命令的命令編號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \!&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行命令的歷程編號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \$&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果有效的UID是0，就顯示一個&quot;#&quot;符號，否則就顯示一個&quot;$&quot;符號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \nnn&amp;nbsp;&amp;nbsp;&amp;nbsp; 八進制的字符碼&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \\&amp;nbsp;&amp;nbsp;&amp;nbsp; 顯示一個到斜線&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \[&amp;nbsp;&amp;nbsp;&amp;nbsp; 非列印(non-printing)字符序列的開頭，像是終端機的控制序列&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; \]&amp;nbsp;&amp;nbsp;&amp;nbsp; 非列印(non-printing)字符序列的結尾。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.4 命令的搜尋路徑&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在.bash_profile加入PATH: PATH=$PATH:&quot;/home/you/bin&quot;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.5 將命令的路徑存入雜湊表&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hash 查看雜湊表內容&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hash -r&amp;nbsp;&amp;nbsp;&amp;nbsp; 移除hash的一切&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hash -d&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp; 移除特定的命令名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hash -p namepath&amp;nbsp;&amp;nbsp;&amp;nbsp; 加入特定的命令路徑&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 使用set 指定hashall 選項開關hash&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.6 目錄的搜尋路徑和變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CDPATH 值如同PATH&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 空字串代表現行目錄&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2.7 雜項變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HOME&amp;nbsp;&amp;nbsp;&amp;nbsp; 你的主機(登入)目錄名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SECONDS&amp;nbsp;&amp;nbsp;&amp;nbsp; shell被調用之後所持續的秒數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BASH&amp;nbsp;&amp;nbsp;&amp;nbsp; 你所執行之shell的路徑名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BASH_VERSION&amp;nbsp;&amp;nbsp;&amp;nbsp; 你所執行之shell的版本編號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BASH_VERSINFO&amp;nbsp;&amp;nbsp;&amp;nbsp; 你所執行之shell的版本資訊陣列&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PWD&amp;nbsp;&amp;nbsp;&amp;nbsp; 現行目錄&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; OLDPWD&amp;nbsp;&amp;nbsp;&amp;nbsp; 執行上一次cd命令之前所在的目錄&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. 定製與子行程&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 5.1 環境變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; export varnames&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; export or export -p 察看環境變數&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TERM=trythisone emacs filename&lt;br /&gt;
&lt;br /&gt;
四. shell 程式設計基礎&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. shell 命令稿與函式&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 執行script方法: &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. source scriptname&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 鍵入檔案名稱+enter&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ./scriptname :相當於鍵入命令稿的絕對路徑&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 透過名稱調用命令稿之前需要先賦予它執行權&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 差異:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; source scriptname&amp;nbsp;&amp;nbsp;&amp;nbsp; shell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;gt;--script--&amp;gt;----&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在同一個shell上執行script&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scriptname&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; shell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shell等待subshell執行完script後繼續執行&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; subshell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --script--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在subshell上執行script&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scriptname&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; shell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;gt;...........----&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; subshell執行同時shell繼續執行(subshell在背景執行)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; subshell&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --script--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在背景subshell執行script&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1 函式&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 表示方式:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; function functname&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; shell commands&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; functname ()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; shell commands&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 可以使用unset -f functname 刪除某個函式的定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; declare -f :查看登入時間定義了那些函式&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; declare -F :僅查看函式的名稱&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 函式與script差異:&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 函式並不會以名子來調用script那樣被執行在另一個行程中，執行一個函式的語意比較像是登入系統時，.bash_profile檔所做的事或是像以source命令來調用任何script。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 函式與script同名時，函式具有優先執行的權利&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 各種命令優先權:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 別名&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. function 以及 if 和for 之類的關鍵字&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 函式&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4. 內建命令，像是cd 和type&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 5. script和可執行的程式，shell會根據PATH環境變數裡所列舉的目錄來搜尋他們&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果名稱相同，別名會比函式和script具有更高的執行優先權。可以使用command,builtin 和 enable等內建命令來改變他們優先執行順序。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type name : 解釋bash命令方式&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type -a name 查看name所有定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type -p name 查看限制為可執行檔或shell script&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type -P name 查看限制為可執行檔或shell script 即使-t選項回傳值不是file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type -f name 查看只支援關鍵字、檔案以及別名。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type -t name 只查看描述單字alas, keyword, function, builtin 或file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -t可以和其他選項一起使用&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. shell變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 可以使用$VAR 取得值&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 可以透過export讓子行程知道&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.1 位置參數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 唯讀不能指定新值&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 3等等: 他們的值$1 $2 $3表示第一個到第三個輸入參數&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0 值$0 : 代表script file name&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; * 和 @ : 這2個特殊變數包含了所有的位置參數(位置參數0除外)，兩者之間的差異相當微妙但很重要，而且只有當他們被雙引號刮住時，才會凸顯此一差異。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;$*&quot; : 是一個包含所有位置參數的單一字串，並以環境變數IFS(internal field separator)中的第一個字符做為位置參數的分隔符；IFS的預設通常是一個空格、跳格或換行符號。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;$@&quot; : 相當於&quot;$1&quot; &quot;$2&quot; ...&quot;$N&quot; N代表參數數目相當於N個以雙引號刮住的字串，並以空格為分隔符&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp; : 存放位置參數的數目&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.1.1 函式中的位置參數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -----------------------------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ascript(script)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $var1&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; 函式 afunc&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; $2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -----------------------------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $var1 $0 在ascript(script)和函式afunc都看的到&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; script的$1 $2 只有在script看的到&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 函式的$1 $2 只有在函式看的到&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.2 函式裡的區域變數&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local var&amp;nbsp;&amp;nbsp;&amp;nbsp; #設定為區域變數&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.3 具引號的$@和$*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 為什麼&quot;$*&quot;中的元素要以IFS的第一個字符做為分隔符號，而不使用空格就好?這是為了讓你的輸出具有彈性。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 為什麼&quot;$@&quot;的行為就好像是N個被加上雙引號的字串?這是為了讓你能再以分開的值來使用他們。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.4 變數的另一種語法&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 除了$varname 外，還有${varname} 這個更一般化之語法的簡單形式。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 為什麼會有兩種語法?&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 如果你的程式碼參用到九個以上的位置參數時你必須用${10}來表示第十個參數，不可以用$10&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 如果想要在變數後面加一個底線之類符號&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 字串算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 字串算符能讓你作以下幾件特別的事：&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 確定變數存在與否（亦既有被定義而且其值不是空的）&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 為變數設定預設值&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 捕捉因變數未被設定所導致的錯誤&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 移除變數值中與樣式相符的部份&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1 字串算符的語法&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 字串算符的語法，基本上就是將具運算能力的特殊字符擺在變數名稱與右括號之間，而算符所需要的任何引數則會擺在算符的右邊。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varname:-word} :&amp;nbsp;&amp;nbsp;&amp;nbsp; 若varname存在而且不是空的，則傳為它的值;否則傳回word。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 目的：若此變數沒有被定義，則傳回一個預設值。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ex.:&amp;nbsp; 若count沒有定義 ${count:-0}的求值結果為0 &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varname:=word} :&amp;nbsp;&amp;nbsp;&amp;nbsp; 若varname存在而且不是空的，則傳回他的值;否則就把他設成word，然後傳回它的值。位置參數和特殊參數不能以這種方式指定。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 目的：若某個變數沒有被定義，則為他設定一個預設值。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ex.: 若count沒有定義 ${count:=0} 會把count設成0。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varname:?message} :&amp;nbsp;&amp;nbsp;&amp;nbsp; 若varname存在而且不是空，則傳回它的值;否則印出varname:message，並放棄現行的命令或命令稿 (只適用於以非互動方式操作的shell)。若省略message則會產生parameter null or net set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 目的：捕捉因變數未定義所導致的錯誤。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ex.: 若count沒有定義 ${count:?&quot;undedined!&quot;}會顯示 count:undefined!&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varname:+word}&amp;nbsp;&amp;nbsp;&amp;nbsp; 若varname存在而且不是空的，則傳回word;否則傳回空值(null)。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 目的：測試某個變數存在與否。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ex.: 若count有定義 ${count:+1}會傳回1(代表此事為真)。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varname:offset:length} ：進行子字串的擴展(substring expansion)。它會傳回$varname中開始位置為offset，字符個數為length的子字串。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $varname中第一個字符的位置編號為0。若省略length，這個子字串將會從offset開始，一直延續到$varname的末端。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果offset小於0，那麼位置會從$varname的末端開始算起。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果varname是@，哪麼length就是從參數offset開始算起之位置參數的數目。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 目的：傳回某個字串的一部分(子子串或切片)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ex.若count被設成frogfootman，則${count:4}會傳回footman。而${count:4:4}會傳回foot。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3.2 樣式以及樣式比對&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${variable#pattern}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern與變數值的開頭相符就刪除相符的部分(取最短者)，並傳回變數其餘的部份。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${variable##pattern}&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern與變數值的開頭相符就刪除相符的部分(取最長者)，並傳回變數其餘的部份。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${variable%pattern}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern與變數值的結尾相符就刪除相符的部分(取最短者)，並傳回變數其餘的部份。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${variable%%pattern}&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern與變數值的結尾相符就刪除相符的部分(取最長者)，並傳回變數其餘的部份。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varable/pattern/string}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${varable//pattern/string}&amp;nbsp;&amp;nbsp;&amp;nbsp; 在variable中符合pattern的部份(取最常者)會被取代成string。 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果是第一種形式，只有的一個相符的部份會被取代。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果是第二種形式，所有相符的部份都會被取代。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern是以一個#開始的，它就必須比對變數的開頭。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果pattern是以一個%開始的，它就必須和變數的結尾進行比對。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果string是空的，符合的部份會被刪除。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果variable是@或*，則會依序對每個位置參數作此操作。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3.3 長度算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ${#varname}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 它會傳回字符串之變數值的長度。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3.4 經延伸的pattern比對算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *(patternlist)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;所指定的pattern出現零或多次，代表符。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; +(patternlist)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;所指定的pattern出現一或多次，代表符。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ?(patternlist)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;所指定的pattern出現零或一次，代表符。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @(patternlist)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;所指定的pattern出現一次，代表符。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; !(patternlist)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;相符於任何pattern，但所指定的樣式除外。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. 命令替換&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(UNIX Command)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
五. 流程控制&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. if/else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if condition&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; statements&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [elif condition&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ethen statements...]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; statements]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1 結束狀態&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0 通常代表沒問題的結束狀態。 其他編號(1~255)通常代表錯誤。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果結束狀態=0, condition 會被判定為真; 若為其他值則判定為否。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $?&amp;nbsp;&amp;nbsp;&amp;nbsp; 最後一個執行之命令的狀態。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2 return N&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 只能用在函式和以source 執行的shell script。相對而言exit N 會結束整個shell script。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.3 合併結束命令&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; statement1 &amp;amp;&amp;amp; statement2 執行statement1，如果它的結束狀態是0(true)，繼續執行statement2。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; statement1 || statement2 執行statement1，如果它的結束狀態不是0(true)，繼續執行statement2。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4 條件測試&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [...]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [[...]] 如同[...]但不會對括符裡的單字進行單字分離和路徑名稱擴展的動作。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4.1 字串比較&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 字串比較算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 算符&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 若...為真&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ==================================================================&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1=str2&amp;nbsp;&amp;nbsp;&amp;nbsp; str1與str2相符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1!=str2&amp;nbsp;&amp;nbsp;&amp;nbsp; str1與str2不相符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1&amp;lt;str2&amp;nbsp;&amp;nbsp;&amp;nbsp; str1小於str2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1&amp;gt;str2&amp;nbsp;&amp;nbsp;&amp;nbsp; str2大於str2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -n str1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1不是空的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -z str1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str1是空的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4.2 檔案屬性檢查&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 檔案屬性算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 算符&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 若...為真&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ==================================================================&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -a file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file 存在&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -d file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file 存在，而且是一個目錄。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -e file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file 存在；如同-a&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -f file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file 存在，而且是一個普通檔案(並非目錄或其他特殊檔)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -r file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 擁有file的讀取權&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -x file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 擁有file的執行權，或目錄的搜尋權&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -N file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 自從上次讀取後file已被修改過&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -O file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 擁有file的所有權&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -G file&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file的群組識別碼符合你的群組識別碼，或是你的群組識別碼中的一個(如果你同時隸屬於多個群組)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file1 -nt file2&amp;nbsp;&amp;nbsp;&amp;nbsp; file1比file2還新&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file1 -ot file2&amp;nbsp;&amp;nbsp;&amp;nbsp; file1比file2還舊&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ condition ] &amp;amp;&amp;amp; [ condition ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if command &amp;amp;&amp;amp; [ condition ]; then&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5 整數條件句&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 算術測試算符&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 測試&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 比較&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =================================================================&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -lt&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 小於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -le&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 小於或等於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -eq&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 等於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -ge&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 大於或等於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -gt&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 大於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -ne&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 不等於&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. for&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for 迴圈可讓已以固定的次數&amp;lt;重複執行某個區段的程式碼&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 語法:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for name [in list ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 用來處理 $name 的述句&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; list是一份名單(如果省略 in list，這份名單會被預設為&quot;$@&quot;)</content><link rel='replies' type='application/atom+xml' href='http://um-chung.blogspot.com/feeds/6479612269616823945/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://um-chung.blogspot.com/2011/09/shell-script-po.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/6479612269616823945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1536207310096707015/posts/default/6479612269616823945'/><link rel='alternate' type='text/html' href='http://um-chung.blogspot.com/2011/09/shell-script-po.html' title='shell script po文測試標題'/><author><name>eric</name><uri>http://www.blogger.com/profile/16593420312066956752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>