2
存在一個奇怪的問題,即在函數中更新「全局變量」的值,但當我在其他函數中檢查更新值時,更新的值會丟失。任何幫助,將不勝感激。全局變量中的更新值在Shell腳本中丟失
#!/bin/bash
FINAL_RESULT="";
COMMAND_RESULT="";
function init() {
USERNAME="root";
DF_THRESHOLD="20";
DF_COMMAND="df -Pkh";
}
function executeCommand() {
local RESULT;
SERVER=$(hostname);
RESULT=$($1);
FINAL_RESULT="$FINAL_RESULT -------------------------- Executing command : \"$1\" on \"$SERVER\" --------------------------"
echo "Updating FINAL_RESULT to $FINAL_RESULT" # Updated value is present
echo "$RESULT"
COMMAND_RESULT="$RESULT"
}
function getCommandResult() {
executeCommand "$1";
echo "$COMMAND_RESULT" | while read eachLine
do
if [ "$eachLine" != "" ]; then
echo "----------- eachLine ----------- $eachLine"
fi
done
echo "Found FINAL_RESULT as $FINAL_RESULT" # Updated values is lost
}
function main() {
init
getCommandResult "$MMGETSTATE_COMMAND" "MMGETSTATE";
}
main
echo "*** $FINAL_RESULT" # Even now the updated values are not found
在修剪腳本以顯示全局變量問題時,我刪除了do和do while。我道歉。 – Amber
好的我沒有得到'parseResult_ $ 2'在你的腳本中做什麼。嘗試以'bash -ex。/ script.sh'運行腳本並檢查調試信息。 – anubhava
這是一個函數調用,但這與我的問題是相切的。我也更新過。 – Amber