如何在变量中定义目录以便将文件备份到?

如何在变量中定义目录以便将文件备份到?

我试图理解这个非常基本的脚本中的逻辑。我正在尝试完成一些非常简单的事情。我正在尝试复制/var/log/messages到一个名为的目录(在 下/),backup称为文件messages.txt

所以这是脚本:

#!/bin/bash

BACKP="$BACKDIR/$BACKFILE"

BACKDIR="/backup"

BACKFILE="messages.txt"

echo "Backing up files to $BACKP"

cp /var/log/messages $BACKP

这是我的输出:

Backing up files to /

此外,它将消息文件复制到根文件系统,这完全不是我想要的。我需要理顺我的逻辑,我完全不知道我做错了什么。

答案1

你必须定义事物你使用它们:

BACKDIR="/backup"
BACKFILE="messages.txt"
BACKP="$BACKDIR/$BACKFILE"
...

稍微扩展一下这一点,如果 shell 遇到这种情况:

BACKP="$BACKDIR/$BACKFILE"

它获取 的值BACKDIR和 的值BACKFILE并替换它们。在您的原始示例中,当 shell 遇到 BACKP 赋值时,这两个值都是未定义的。 shell程序中未定义变量的值被替换为空字符串,所以上面的赋值等价于

BACKP="/"

但是,如果您首先定义 BACKDIR 和 BACKFILE,并且然后对 BACKP 进行分配,就像我在本答案的第一部分中所做的那样,插入它们的值,最终得到相当于

BACKP="/backup/messages.txt"

这就是你想要的。

相关内容