Bash 脚本 - Do-While 循环中的变量作用域

发布于 2024-12-09 03:47:55 字数 267 浏览 0 评论 0原文

我有一个 do while 循环,我在其中向自身添加一个变量

while read line 
do
      let variable=$variable+$someOtherVariable
done
    return $variable

当我回显 $variable 的值时,我没有得到任何输出...

这是将一些值添加回变量本身的正确方法吗(即 i = i+j ) 另外,在 bash 脚本编写的上下文中,本例的范围是什么。

I have a do while loop where I am adding a variable to itself

while read line 
do
      let variable=$variable+$someOtherVariable
done
    return $variable

When I echo the value of $variable I get no output ...

Is this the correct way to add some value back to the variable itself (i.e. i = i+j)
Also, in the context of bash scripting what is the scope in this case..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

﹎☆浅夏丿初晴 2024-12-16 03:47:55

return 返回一个“退出”代码,一个数字,而不是您要查找的内容。您应该执行echo

return returns an "exit" code, a number, not what you are looking for. You should do an echo.

紧拥背影 2024-12-16 03:47:55

问题是变量在作用域之外不可见(赋值不会传播到循环之外)。

我想到的第一种方法是在子 shell 中运行命令并强制循环发出变量:

variable=$(variable=0; while read line; do variable=$((variable+someOtherVariable)); done; echo $variable)

The problem is that the variable is not visible outside of the scope (the assignment is not propagated outside the loop).

The first way that comes to mind is to run the command in a subshell and forcing the loop to emit the variable:

variable=$(variable=0; while read line; do variable=$((variable+someOtherVariable)); done; echo $variable)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文