Al momento ho questo script bash (che si trova nella mia home directory, cioè, /home/fusion809/
e io sono in esecuzione come root, come è necessario per le linee icona di copiatura):Come posso verificare se esiste un file o una directory di file in bash?
cd /home/fusion809/Pictures/Icon*
declare -a A={Arch,Debian,Fedora,Mageia,Manjaro,OpenSUSE}
declare -a B={Adwaita,Faenza,gnome,Humanity}
for i in $A; do
for j in $B; do
if test -e /usr/share/icons/$j/scalable ; else
mkdir /usr/share/icons/$j/scalable/
fi
if test -e /usr/share/icons/$j/scalable/$i.svg ; else
cp -a $i*.svg /usr/share/icons/$j/scalable/$i.svg
fi
done
done
Quello che voglio questo script per fare è copiare le icone dalla mia directory Pictures/Icons and logos
alle sottodirectory del tema scalable
(specificato in $B
) in /usr/share/icons
. Prima di farlo, tuttavia, mi piacerebbe creare una directory scalable
in queste sottodirectory di temi se non esiste già. Il problema è che la parte else dei condizionali non viene letto correttamente, come continuo a ricevere questo errore:
./copyicon.sh: line 8: syntax error near unexpected token `else'
./copyicon.sh: line 8: ` if test -e /usr/share/icons/$j/scalable ; else'
Se vi state chiedendo il motivo per cui il test -e ...
al condizionale si basa su un libro di testo sulla bash scripting I ho seguito
Modifica 'test -e ...' per 'test [-d ...]' restituisce: ./copyicon.sh: riga 8: errore di sintassi vicino a un token imprevisto 'else ' ./copyicon.sh: line 8: 'test [-d/usr/share/icons/$ j/ridimensionabile]; else ' – BH2017
Questo perché la tua sintassi è sbagliata. Aggiornerò la risposta – ShellFish
Per "negare la condizione" intendete che il punto esclamativo (!) Restituisce true se la directory non esiste ma è falsa se esiste? – BH2017