作成したいtarファイルがすでに存在するかどうかをテストしようとしています。そうでなければtarファイルを生成したいです(コードのこの部分はうまくいきます)。ただし、tarファイルのファイル名が存在するかどうかをテストするifステートメントは機能しません(tarファイルが存在するかどうかを実際にテストせずにtarファイルがすでに存在していても、elseステートメントに直接ジャンプするだけです)。どんなアイデアがありますか?
注:fire_dir_nameは圧縮したいファイルの名前です(例:myfile1.txt)。
#create variable for new name of file/dir
date=$(date +"%Y%m%d")
new_name="$file_dir_name.$date"
file_name="$new_name.tar"
echo $file_name
#check if tar file exists already
if [ -f "$file_name" ]
then
echo "$file_name" exists
else
# create tar file
tar -cvf $dir_path/$new_name.tar $file_dir_name -C $dir_path
ベストアンサー1
ここで重要なのは、作成中の同じファイル名をテストする必要があることです。
#check if tar file exists already
if [ -f "$file_name" ]
then
...
else
# create tar file
tar -cvf "$file_name" ...
...
fi
file_name
また、フルパスになることができない理由もありません。
file_name="$dir_path/$new_name.tar"
ディレクトリを変数名に入れると、エラーが発生する可能性が低くなります。変数tar_name
などtar_path
を呼び出す方が良いスタイルです。