2009-06-22 58 views
4

以下兩行完全相同嗎?如果不是有什麼區別?我見過很多的shell腳本利用數字1和只是想知道是什麼讓你有號碼2在ksh中使用排版與簡單設置變量有什麼區別?

  1. typeset TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
  2. TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"

回答

4

typeset將創建一個局部變量(一個相比不「泄漏」)。這在函數中很有用,但我也看到它在shell腳本的頂層使用。

a=0 
function x { 
    typeset a=1 
} 
x 
echo $a 
function y { 
    a=2 
} 
y 
echo $a 

將打印

0 
2 

您還可以使用typeset創建數組和整數。

[編輯]添加了function關鍵字,因爲有些外殼需要它。如果它冒犯你的外殼,將其刪除,但它應該適用於大多數版本。

+1

您的示例代碼按照bash和傳統ksh(ksh88)的預期方式工作,但不與ksh93一起使用,它需要使用`function name {`語法,而不是`name(){`one'來聲明函數。 – jlliagre 2011-12-15 05:58:22

0

由於shell腳本是一種鬆散類型的語言(其中變量不具有datytype),我們可以使用typeset來設置一個特定的變量來僅使用類似的數據類型的值。

相關問題