我有3個shell腳本意外的文件結尾時,我執行我的shell腳本
script1.sh
if [ $# -ne 3 ]
then
# RETURN INVALID USAGE
GetBatchCredentials_Result="Error"
GetBatchCredentials_Reason="Invalid usage: . $0 ApplicationId Alias Logfile"
else
# CONTINUE PROCESSING WITH PARAMETERSLT
RSLT=`/www/inf/xxxx/inf_service_account/2.0/scripts/script2.sh $1 $2 $3`
eval "$RSLT";
fi
script2.sh
# SET UP INFRASTRUCTURE CLASSPATH
. /www/inf/xxxx/inf_service_account/2.0/scripts/script3.sh
PROP="-Dcom.xxxx.env.location.pdc=ITC"
# CALL JAVA GetBatchCredentials TO RETRIEVE THE SERVICE ACCOUNT CREDENTIALS
$JAVA_HOME/bin/java $PROP com.xxxx.inf.serviceaccount.batch.GetBatchCredentials $1 $2 $3
script3.sh
#!/bin/ksh
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/inf-service-account-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf_crypto.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf_generics.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf_password_vault.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-jmx-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-utils-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-env-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-recovery-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-throttle-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/inf-trans-2.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/javaee-api-6.0.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/db2jcc.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/db2jcc_license_cu.jar
CLASSPATH=$CLASSPATH:/www/inf/xxxx/inf_service_account/2.0/dependencies/db2java.zip
export CLASSPATH
我的領導要我把所有這3個腳本合爲一體,因爲在這裏有3個獨立的腳本沒有意義。這3個腳本正常工作分開,但我第一次嘗試先2個腳本合併,我getitng文件錯誤的unexpecetd結束的時候我執行這個腳本:
SCRIPT1 + script2.sh
if [ $# -ne 3 ]
then
# RETURN INVALID USAGE
GetBatchCredentials_Result="Error"
GetBatchCredentials_Reason="Invalid usage: . $0 ApplicationId Alias Logfile"
else
#SET UP INFRASTRUCTURE CLASSPATH
. /www/inf/xxxx/inf_security_common/2.0/scripts/script3.sh
#CALL JAVA GetBatchCredentials TO RETRIEVE THE SERVICE ACCOUNT CREDENTIALS
RSLT='$JAVA_HOME/bin/java com.xxxx.inf.serviceaccount.batch.GetBatchCredentials $1 $2 $3'
eval "$RSLT";
fi
我運行上面的腳本中使用下面的腳本:
testScript.sh
. /www/inf/xxxx/inf_security_common/2.0/scripts/GetBatchCredentials.sh SampleBatchAppId xxxxAlias gbc.log
if [ "$GetBatchCredentials_Result" != "Success" ]
then
echo "Error obtaining FTP Credentials"
echo $GetBatchCredentials_Reason
ret=1
else
echo "Obtained FTP Credentials"
########### FTP User ID ################################
FTP_USR=$GetBatchCredentials_ID
########### FTP Password ###############################
FTP_PWD=$GetBatchCredentials_PW
echo "starting FTP" $FTP_USR $FTP_PWD
fi
請幫我解決這個錯誤。
放聲需** **最小 - 削減到包括產生給定的錯誤所需要的代碼只有最小量。這可以像刪除事件一樣簡單,直到錯誤不再發生,撤銷保留所需的一行。 –
......在這裏有一堆無關的bug,順便說一句,http://shellcheck.net/上的自動化工具會抓住它。 –
(另外,這裏沒有很好的理由使用'eval';參見http://mywiki.wooledge.org/BashFAQ/048的BashFAQ#48,瞭解爲什麼你不應該使用'eval',除非你有絕對沒有其他選擇)。 –