shell变量没有保持价值

时间:2015-03-07 14:29:18

标签: bash shell unix pipeline subshell

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

第一个echo完美打印,但最后一个打印空行;我不知道为什么。不知何故,$DIRS值未被设置。

#!/bin/bash

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

echo $DIRS

1 个答案:

答案 0 :(得分:3)

问题是在这里使用管道,为你的while循环分支,因此正在子shell中对DIRS进行更改在父shell中不可见。此处不需要cat

这样做:

#!/bin/bash

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

echo "$DIRS"