1

创建一个脚本来备份文件或目录树,方法是制作文件的 zip 并将其复制 $HOME/Backups。zipfile 名称应包括它正在备份的内容以及文件的创建日期。该脚本应采用随机数量的参数来指定要备份的内容。如果没有给它至少一项包含在备份中,它应该抱怨。我已经完成了大部分工作,但我遇到了多个文件的问题,即要同时备份的文件 1 文件 2

#!/bin/bash
clear
echo
echo "Use this script to backup files to your home/backups directory"
echo
ls -la
echo
echo "================================================================"
echo
echo -n "Input file(s)/dir to backup: " ; read filez

while [ "$filez" == "" ] ; do
    echo -n "You didnt input a filename, try again: " ; read filez
done

while [ ! -e  "$filez" ] ; do
    echo -n "No such file/dir, try again: " ; read filez
    while [ "$filez" == "" ] ; do
        echo -n "You didnt input a filename, try again: " ; read filez
    done
done


echo
echo "================================================================"
echo
echo -n "Input name of backup file you wish to create(date automatically included): " ; read filezname
while [ "$filezname" == "" ] ; do
    echo -n "You didnt input a filename, try again: " ; read filezname
done

zip -r $HOME/backups/$filezname"_$(date +%F)" $filez
4

1 回答 1

0

就个人而言,我喜欢bash直接从命令行获取参数的脚本:

script arg1 arg2 arg3 ...

Bash 使用特殊数组 接受参数$@,您可以使用shift. 像这样的东西:

#!/bin/bash

filezname=$1
shift

filez=""
for file in "$@"
do
    filez="$filez $file"
done

if [[ $filez == "" ]]
then
    echo "Give me argz! Nom nom nom!"
    exit 0
fi

# Do stuff

它的作用是采用第一个参数,将其作为 zip 文件的名称,然后将您想要压缩的其余文件名放入一个可以使用的大长空格分隔的字符串中。

于 2016-04-06T02:19:04.850 回答