从 while 循环更新全局变量
Update global variable from while loop
在此 shell 脚本中更新我的全局变量时遇到问题。
我读过子 shell 上循环 运行 内的变量。谁能解释一下这是如何工作的以及我应该采取什么步骤。
USER_NonRecursiveSum=0.0
while [ $lineCount -le $(($USER_Num)) ]
do
thisTime="$STimeDuration.$NTimeDuration"
USER_NonRecursiveSum=`echo "$USER_NonRecursiveSum + $thisTime" | bc`
done
特定 循环样式不会 运行 在 sub-shell 中,它将更新变量就好了。您可以在以下代码中看到,除了添加您未包含在问题中的内容外,与您的代码相同:
USER_NonRecursiveSum=0
((USER_Num = 4)) # Add this to set loop limit.
((lineCount = 1)) # Add this to set loop control variable initial value.
while [ $lineCount -le $(($USER_Num)) ]
do
thisTime="1.2" # Modify this to provide specific thing to add.
USER_NonRecursiveSum=`echo "$USER_NonRecursiveSum + $thisTime" | bc`
(( lineCount += 1)) # Add this to limit loop.
done
echo ${USER_NonRecursiveSum} # Add this so we can see the final value.
该循环 运行 循环四次,每次都将 1.2
添加到从零开始的值,循环完成后您可以看到它以 4.8
结束。
虽然 echo
命令 在 sub-shell 中执行 运行,但这不是问题,因为反引号明确 捕获它的输出并将其“传递”到当前shell.
在此 shell 脚本中更新我的全局变量时遇到问题。 我读过子 shell 上循环 运行 内的变量。谁能解释一下这是如何工作的以及我应该采取什么步骤。
USER_NonRecursiveSum=0.0
while [ $lineCount -le $(($USER_Num)) ]
do
thisTime="$STimeDuration.$NTimeDuration"
USER_NonRecursiveSum=`echo "$USER_NonRecursiveSum + $thisTime" | bc`
done
特定 循环样式不会 运行 在 sub-shell 中,它将更新变量就好了。您可以在以下代码中看到,除了添加您未包含在问题中的内容外,与您的代码相同:
USER_NonRecursiveSum=0
((USER_Num = 4)) # Add this to set loop limit.
((lineCount = 1)) # Add this to set loop control variable initial value.
while [ $lineCount -le $(($USER_Num)) ]
do
thisTime="1.2" # Modify this to provide specific thing to add.
USER_NonRecursiveSum=`echo "$USER_NonRecursiveSum + $thisTime" | bc`
(( lineCount += 1)) # Add this to limit loop.
done
echo ${USER_NonRecursiveSum} # Add this so we can see the final value.
该循环 运行 循环四次,每次都将 1.2
添加到从零开始的值,循环完成后您可以看到它以 4.8
结束。
虽然 echo
命令 在 sub-shell 中执行 运行,但这不是问题,因为反引号明确 捕获它的输出并将其“传递”到当前shell.