我目前有一个bash脚本(位于我的主目录中,即/home/username/
,我正在以root用户身份运行它,因为这对于复制图标是必要的):
cd /home/username/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
我希望这个脚本要做的是将我的
Pictures/Icons and logos
目录中的图标复制到指定在$B
中的 /usr/share/icons
主题子目录中的 scalable
。但在此之前,如果这些主题子目录中不存在scalable
目录,我希望它可以创建它。然而,条件语句的else部分未被正确读取,因为我一直收到以下错误信息:./copyicon.sh: line 8: syntax error near unexpected token `else'
./copyicon.sh: line 8: ` if test -e /usr/share/icons/$j/scalable ; else'
如果你想知道为什么条件语句中的 test -e ...
,这是基于我一直在遵循的一本有关bash脚本的教材。
test -e ...
更改为test [-d ...]
会导致以下错误:./copyicon.sh: 第8行:语法错误,附近有意外的标记else' ./copyicon.sh: 第8行:
if test [ -d /usr/share/icons/$j/scalable ] ; else' - Josh Pinto!
的相同表达式将返回真,反之亦然! - ShellFish