linux - 全局变量中的更新值在 Shell 脚本中丢失

标签 linux bash 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

最佳答案

while 循环在子 shell 中执行。这是一个常见问题; http://mywiki.wooledge.org/BashFAQ/024

关于linux - 全局变量中的更新值在 Shell 脚本中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892848/

相关文章:

linux - 删除两个字符之间的文件名bash

bash - grep 一个模式并输出行的不匹配部分

linux - Nginx 日志轮换

bash - gnome session 结束时停止脚本

linux - 在多个文件中查找按日期排序的字符串

linux - shell脚本在尝试执行sudo命令时给出 "sudo: no tty present and no askpass program specified"

linux - 从 Bash 中具有特定模式的文件中获取行

linux - 如何让 sed 从标准输入中读取?

c - 如何在 Linux 内核中打印 dst_entry 的内容

linux - 如何在特定时间内将内存使用量增加到特定级别