Bash,错误地将目录名存储在变量中

时间:2014-10-14 21:26:17

标签: bash

我知道这可能是一个愚蠢的问题,但我正在尝试编写我的第一个bash脚本并遇到麻烦。它是一个备份脚本,它读取文本文件以获取要备份的目录列表,然后将它们存储在变量中,以便它可以使用变量值作为tar命令的输入。但是当我将值/ home存储在backupdirs文本文件中时,它会给出一个错误,说/ home是一个目录,并且它不会将它存储在变量中。我不能将目录名存储在这样的变量中吗?我该如何解决它?

#!/bin/bash

BACKUP_DIRS=

cat /root/backupdirs.txt |
{
        while read line
        do
            echo $line
            BACKUP_DIRS=$BACKUP_DIRS $line
        done
}

echo $INPUT_DIRS

/bin/tar -czf backup $BACKUP_DIRS

1 个答案:

答案 0 :(得分:1)

使用管道后,它会创建一个子壳。然后BACKUP_DIRS保存在子shell中。子shell退出后,变量随之被破坏。解决这个问题的一种方法是在没有管道的情况下进行操作

while read line
do
  echo $line
  BACKUP_DIRS+=" $line"
done </root/backupdirs.txt