脚本无法生成备份文件

脚本无法生成备份文件

我是 shell 脚本新手,我尝试编写一个脚本:

  • 提示输入目录
  • 循环遍历目录
  • 如果找到文件,它就会使用脚本中的函数备份它们
  • 创建备份

我刚刚创建了一个名为 file.bak 的文件,以便将所有文件复制到其中(如果找到)。

#!/bin/bash


function backup()
{
cp"$name" >> file.bak
}


#Main Script
echo -n "Please enter a directory name: "
read name
directory="/home/shawn"
if [ -O "$name" ] || [ -G "$name" ]
then
backup
else
echo "$name has no files."
fi

答案1

对于初学者来说,这可能不会达到您的目的:

cp"$name" >> file.bak

这将尝试调用前两个字符为 cp,其余字符为 的值的命令$name。这样的命令可能不存在。

添加空格并不能解决问题:

cp "$name" >> file.bak

这将cp使用单个参数调用该命令(这是一种无效的调用方式),并将该命令在 stdout 上打印的任何内容附加到名为file.bak.你可能想要类似的东西cp "$name" file.bak或者也许cat "$name" >> file.bak

-O使用和的测试-G也没有多大意义;您正在打印的错误消息与这些操作员检查的内容并不真正匹配。

答案2

你可以尝试类似的东西

#!/bin/bash

echo -n "Please enter a directory name: "
read name
find $name -type f -exec cp {} {}.bak \;

相关内容