我知道这可能是一个愚蠢的问题,但我正在尝试编写我的第一个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
答案 0 :(得分:1)
使用管道后,它会创建一个子壳。然后BACKUP_DIRS
保存在子shell中。子shell退出后,变量随之被破坏。解决这个问题的一种方法是在没有管道的情况下进行操作
while read line
do
echo $line
BACKUP_DIRS+=" $line"
done </root/backupdirs.txt