差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:installanywhere:variablproblemeoflinuxscript [2016/02/01 08:49]
tony [How to?]
java:installanywhere:variablproblemeoflinuxscript [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​InstallAnywhere java}} 
-====== 執行Linux Script的問題 ====== 
-===== Problem ===== 
-本來以為升級已經完成,結果在Linux上,發現執行某些script的動作會無效。 
-===== How to? ===== 
-經過trace,發現script內如果有宣告與使用變數,都會不正常。後來發現2015比2008版本多了**Do not substitute unknown variables**的checkbox。\\ 
-{{:​java:​installanywhere:​ia_substitude_unknown_variables.png|}}\\ 
-看了一下官網資料,預設**Do not substitute unknown variables**是不打勾的。如果IA發現了沒宣告過的變數,就會取代為空白,而linux中的變數都是透過$開頭,所以會造成什麼結果呢?​ 舉例來說:​ 
-<code bash> 
-JAVA_PATH="​$INSTALLED_JVM_PATH$"​ 
-echo $JAVA_PATH 
-if [ -e $JAVA_PATH ] 
-then 
-        echo true 
-else 
-        echo false 
-fi 
-</​code>​ 
-$INSTALLED_JVM_PATH$是我在IA宣告的變數,假設為/​opt/​jre/​bin/​java。在沒打勾的情況下,因為$JAVA_PATH不是IA宣告的變數,就會從$開始往後取代為空白:​ 
-<code bash> 
-JAVA_PATH="/​opt/​jre/​bin/​java"​ 
-echo JAVA_PATH ] 
-then 
-        echo true 
-else 
-        echo false 
-fi 
-</​code>​ 
-最後打勾就解決了。我這個案例是發生在linux script上,但是不代表在windows batch不會發生問題。只要你script內有$,就要記得打勾這選項。\\ 
-\\ 
-友藏內心獨白:​ 要來好好review了! 
-\\ 
-如果懶的review,就寫程式針對以下設定改為true試試吧.. 
-<code xml> 
-<​property name="​substituteUnknownVariable">​ 
-  <​boolean>​false</​boolean>​ 
-</​property>​ 
-</​code>​ 
-===== Reference ===== 
-  * [[http://​helpnet.flexerasoftware.com/​installanywhere2014/​Content/​helplibrary/​ia_prevent_varsubs.htm|Preventing the Substitution of Unknown Variables]] 
  
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~