![私のbashスクリプトには何の問題がありますか? [閉鎖]](https://linux33.com/image/115157/%E7%A7%81%E3%81%AEbash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AB%E3%81%AF%E4%BD%95%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
私のスクリプトにどのような問題があるのかを把握するのが困難です。
#!/bin/bash
echo "Good Day $USER"
if [ -f "$1" ]
then
tar -cvf home-10-07-2017.tar --files-from /dev/null
echo "You are about to back up the following files… $*"
for i in "$@"
do
if [ -f "$i" ]
then
PROCEED='YES'
else
PROCEED='NO'
fi
if [ $PROCEED='YES' ]
then
tar -rvf home-10-07-2017.tar "$i"
fi
done
tar -vzf home-10-07-2017.tar.gz
else
echo 'You did not enter any files to backup'
fi
スクリプトを実行すると、次のエラーが発生します。
./backups.sh first.txt second.txt
Good Day fed
You are about to back up the following files… first.txt second.txt
first.txt
second.txt
tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options
答え1
最後の行の実際のエラーtar
(私の考えではこれが主な問題であるようです)は、実際に実行するアクションを指定していないためです。仕様f
の後にはファイル名が続きます。v
何をすべきかを詳しく教えてください。ファイルが圧縮されたことを示します(z
ほとんどのバージョンでtar
重複)。
あなたが望むタスクはt
ファイルのリストです。この場合、以下が必要です。
tar -tvzf home-10-07-2017.tar.gz