Problem
本來以為升級已經完成,結果在Linux上,發現執行某些script的動作會無效。
How to?
經過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>
留言
張貼留言