Im Moment mache ich ein Bash-Skript, das Tarballs entpackt, um sie zu installieren. Ich bin auf der Seite, die die Tarballs in eine directoy auspackt. Dies ist das Skript:Testen von Dateitypen in Bash-Skripten und Verwenden der entsprechenden Befehle zum Entpacken
#!/Bin/bash/
# This program auto-installs tarballs for you.
# I designed this for Linux noobies who don't
# know how to install tarballs. Or, it's for
# people like me who are just lazy, and don't
# want to put in the commands ourselves.
echo "AutoTar v1.1"
echo "Gnu GPL v2.1"
read -p "Path to tarball:" pathname
cd "${pathname/#~/$HOME}"
ls $pathname
read -p "Please enter the file you wish to complile..." filename
if [-a $filename] == false
then
echo "File does not exist! Exiting the program."
if [[ ${filename -d} ==*.tar.gz ]]
then
tar -xzf $filename
done
else if
[[ ${filename -d} ==*.tgz ]]
then
tar -xzf $filename
done
else if
[[ ${filename -d} ==*.tar.bz2 ]]
then
tar -xjf $filename
done
ls $pathname
echo -n "Please enter the directory of the file you have just unpacked...:"
read directory
cd $directory
Was ich tun müssen, ist die Verwendung einer if-Anweisung, um die Datei und mit dem entsprechenden Befehl zu erkennen, aber ich bin nicht ganz sicher, wie dies zu tun. Mit dem aktuellen Code, den ich habe, bekomme ich einfach den Fehler:
autotar.sh: line 18: conditional binary operator expected
autotar.sh: line 18: syntax error near `==*.tar.gz'
autotar.sh: line 18: `if [[ ${filename -d} ==*.tar.gz ]]'
http://shellcheck.net/ ist dein Freund. Repariere alles was es findet, dann komm zurück. –
(Ich würde vorschlagen, dass Sie Ihre Frage vorübergehend löschen, während Sie das tun, um Downvotes zu vermeiden, und sie dann wieder löscht, wenn Sie noch Fragen haben). –
... Nun, eigentlich ist dein Code so schlimm, dass Shellcheck ihn nicht analysieren kann. Okay, hier könnte eine Antwort notwendig sein. –