執行Linux Script的問題

本來以為升級已經完成,結果在Linux上,發現執行某些script的動作會無效。

經過trace,發現script內如果有宣告與使用變數,都會不正常。後來發現2015比2008版本多了Do not substitute unknown variables的checkbox。

看了一下官網資料,預設Do not substitute unknown variables是不打勾的。如果IA發現了沒宣告過的變數,就會取代為空白,而linux中的變數都是透過$開頭,所以會造成什麼結果呢? 舉例來說:

JAVA_PATH="$INSTALLED_JVM_PATH$"
echo $JAVA_PATH
if [ -e $JAVA_PATH ]
then
        echo true
else
        echo false
fi
$INSTALLED_JVM_PATH$是我在IA宣告的變數,假設為/opt/jre/bin/java。在沒打勾的情況下,因為$JAVA_PATH不是IA宣告的變數,就會從$開始往後取代為空白:
JAVA_PATH="/opt/jre/bin/java"
echo JAVA_PATH ]
then
        echo true
else
        echo false
fi
最後打勾就解決了。我這個案例是發生在linux script上,但是不代表在windows batch不會發生問題。只要你script內有$,就要記得打勾這選項。

友藏內心獨白: 要來好好review了!
如果懶的review,就寫程式針對以下設定改為true試試吧,不過要注意不是每個變數都需要做這事情喔!
<property name="substituteUnknownVariable">
  <boolean>false</boolean>
</property>