shell 变量不保值

shell variable not keeping value

我在文件 /root/backuplist.txt 中有 3 行。

第一个echo打印完美,但最后一个打印空行;我不确定为什么。不知何故,$DIRS 值正在取消设置。

#!/bin/bash

cat /root/backuplist.txt |
while read line
do
  DIRS+="$line "
  echo $DIRS
done

echo $DIRS

问题是这里使用了管道,它是 为您的 while 循环分叉一个子 shell,因此更改为 DIRS在父 shell 中不可见的子 shell 中正在生成。此外 cat 在这里是不必要的。

这样说:

#!/bin/bash

while read -r line
do
   DIRS+="$line "
   echo "$DIRS"
done < /root/backuplist.txt

echo "$DIRS"