1
バックアップまたはリストアに関するbashで書いているスクリプトに問題があります。私がしようとしているのは、パラメータをチェックし、何も表示されていない場合は、名前が提供されるか、終了するまでループします。私はパラメータとループを終了するためにチェックすることができますが、私は持っている問題は、ユーザーの入力を取得し、バックアップファイル名のためにそれを使用しています。ここまでのスクリプトは、誰かがファイル名/ qをループする方法と、残りのスクリプトを扱うためにファイル名の入力を得る方法についてアドバイスできますか?キーボードを使用してファイル名を使用するかどうかを尋ねるループ、またはbashで終了する場合はqを返します。
#!/bin/bash
# Purpose - Backup world directory
# Author - Angus
# Version - 1.0
FILENAME=$1.tar.gz
SRCDIR=World
DESDIR=backupfolder
if [ $# -eq 0 ]
then
echo "No filename detected. To use this utility a filename is
required. Usage:tarscript filename"
else
echo "The filename to be used will be $filename"
fi
while [ $# -eq 0 ]
do
echo "Please provide a filename or press q to exit."
read response
if [ $response == 'q' ]
then
exit
else [ $response == '$FILENAME' ]
echo -n 'Would you like to backup or restore? (B/R)'
read response
if [ $response == 'B' ]
then
tar cvpzf $DESDIR/$FILENAME $SRCDIR
echo 'Backup completed'
exit
fi
fi
done
'test'(' [')の文字列等価演算子は' == 'ではなく' = 'であることに注意してください。 Bashはユーザーの無知のためにそれを受け入れますが、他のシェルは不平を言うでしょう。 – Jens
チップをありがとう。 – Angus
ファイル名が提供されるとどうなりますか? '$'がゼロよりも大きいので、 'if'はスキップされ、' while'もスキップされます。 – Jens