我有一个变量进入 do 循环。我将它的内容附加到一个文件中,但我想将它附加到它本身,这样我就可以用它来做其他事情,比如发送邮件。
我试过了,variable+=$variable
但没有用。
我想访问 do...done 之外的变量
我敢打赌你的循环是管道的一部分
seq 5 | while read num; do x+=$num; done; echo $x
# expect "12345", actually see ""
Run Code Online (Sandbox Code Playgroud)
在 bash 中,当您构建管道时,它会为所有部件生成子外壳。当子shell退出时,您在其中修改的任何变量也会被销毁。
您必须更仔细地编码,以确保在修改它的同一个 shell 中使用该变量。
此示例在同一子 shell 中回显 var:
$ seq 5 | { while read num; do x+=$num; done; echo $x; }
12345
Run Code Online (Sandbox Code Playgroud)
此示例使用进程替换,因此循环在当前 shell 中运行
$ while read num; do x+=$num; done < <(seq 5)
$ echo $x
12345
Run Code Online (Sandbox Code Playgroud)