1

ファイルの zip を作成し、それを $HOME/Backups にコピーして、ファイルまたはディレクトリ ツリーをバックアップするスクリプトを作成します。zipfile の名前には、バックアップ対象とファイルの作成日が含まれている必要があります。スクリプトは、何をバックアップするかを指定するランダムな数の引数を取る必要があります。バックアップに含めるアイテムが少なくとも 1 つ指定されていない場合は、エラーが発生するはずです。私はそれのほとんどを機能させましたが、同時にバックアップする複数のファイル、つまりfile1 file2に問題があります

#!/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 ファイルの名前として取り、次に、zip したい残りのファイル名を、操作できるスペースで区切られた大きな長い文字列に丸呑みします。

于 2016-04-06T02:19:04.850 に答える