基本的にこれは私が答えたい質問です。
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