base64 で圧縮およびエンコードされた別の自己解凍型 tar アーカイブを作成するシェル スクリプトを作成しようとしました。ここからどこに行けばよいかわかりませんし、シェル スクリプトの経験もほとんどありません。
このスクリプトは圧縮されてエンコードされた tar アーカイブを作成しますが./tarName
、ターミナルから実行しようとすると自己解凍が機能しません。どんなアドバイスでも大歓迎です
#!/bin/sh
tarName=$1;
if [ -e $tarName.tar.gz ]
then /bin/echo "$tarName already exists"
exit 0
fi
shift;
for files;
do
tar -czvf tmpTarBall.tar.gz $files;
done
echo "#!/bin/sh" >> $tarName.tar.gz;
echo "base64 -d $tarName.tar.gz" >> $tarName.tar.gz;
echo "tar -xzvf $tarName.tar.gz" >> $tarName.tar.gz;
chmod +x ./$tarName.tar.gz;
base64 tmpTarBall.tar.gz >> $tarName.tar.gz;
rm tmpTarBall.tar.gz;
- - - - - アップデート
周りを見回しましたが、これは私が今持っているものですが、まだ機能しません。誰かが私に理由を説明できますか?
#!/bin/sh
tarName=$1;
if [ -e $tarName.tar.gz ]
then /bin/echo "$tarName already exists"
exit 0
fi
shift;
for files;
do
tar -czvf tmpTarBall.tar.gz $files;
done
cat > extract.sh;
echo "#!/bin/sh" >> extract.sh;
echo "sed '0,/^#TARBALL#$/d' $0 | $tarName.tar.gz | base64 -d | tar -xzv; exit 0" >> extract.sh;
echo "#TARBALL#" >> extract.sh;
cat extract.sh tmpTarBall.tar.gz > $tarName.tar.gz;
chmod +x ./$tarName.tar.gz;
rm extract.sh tmpTarBall.tar.gz;
tarName.tar.gz を実行しようとすると、エラーが発生します: ./tarName.tar.gz: 2: ./tarName.tar.gz: tarName.tar.gz: gzip が見つかりません: stdin: ファイル tar の予期しない終了: 子がステータス 1 を返しました tar: エラーは回復できません: 現在終了しています