特定の日付のUNIXシェルスクリプトのバックアップディレクトリ

特定の日付のUNIXシェルスクリプトのバックアップディレクトリ

基本的にこれは私が答えたい質問です。

2)金曜日に実行すると、user2のホームディレクトリにあるすべてのファイルをバックアップするシェルスクリプト(fridaybackup.sh)を作成します。このスクリプトは、user2backup.tarというバックアップ(tar)ファイルとuser2backup.zipというzipファイルを生成します。

これが私が今まで持っているものです

    #!/bin/sh
    echo
    echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
    read INPUT

    day=$(date +%A)
    time=$(date +%m-%d-%y)
    filename=user2backup${time}.tar.gz
    srcdir='/export/home/student/user2'
    desdir='/export/home/student/backupfolder'

   case $INPUT in
   N) echo "Bye." ;;
   Y)
   if [ "$day" = "Monday" ]
   then 
   tar -cpzf $desdir/$filename $srcdir

    else
    echo "A full backup is done on Fridays only!!!"

     fi ;;
    *) echo "Error" ;;
  esac

しかし、この結果が出てきます。

    student@solaris:~/user2$ sh fridaybackup.sh

    Do you want to create a full backup (Y=Yes, N=No) : Y
    tar: /export/home/student/backupfolder/user2backup10-02-17.tar.gz: No 
     such file or directory
    student@solaris:~/user2$ gedit fridaybackup.sh

どんな助けでもいいでしょう。よろしくお願いします。

ベストアンサー1

コピー/貼り付けに問題があるようです。

変数は次のように設定する必要があります。

day=$(date +%A)

私はあなたがバックティックを使用していると思い、「月曜日」エラーに示されているように書式を設定すると消えます。

近くに文法エラーがあります。if

月曜日のエラー:見つかりません

Bash発生の14行目に示すように、設定が正しいことを証明してください。

( Monday = friday )

これはサブシェルをフォークし、Mondayプログラム名と= Friday引数で実行されます。あなたが望むものではありませんか?

シェルテストで完成を使用

if [ "$day" = "Friday" ]

または

if test "$day" = "Friday"

したがって、正しいシェルは次のようになります。

#!/bin/sh
 echo
 echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
 read INPUT

 day=$(date +%A)
 time=$(date +%m-%d-%y)
 filename=user2backup$time.tar.gz
 srcdir='/export/home/student/user2'
 desdir='/export/home/student/backupfolder'

 case $INPUT in
 N) echo "Bye." ;;
 Y)
 if [ "$day" = "Friday" ]
 then 
 tar -cpzf $desdir/$filename $srcdir

 else
 echo "A full backup is done on Fridays only!!!"

 fi ;;
 *) echo "Error" ;;
 esac

おすすめ記事