由于某种原因,这个脚本将与最后的所有'echo'一起使用,但没有它们$ wall是一个空字符串。这似乎很奇怪。
#!/bin/zsh
if [ ! -n "$1" ] ; then
files=(~/pictures/backgrounds/*jpg)
else
while [ $1 ] ; do
files+=(`echo $1/*jpg`)
shift
done
fi
echo $files
N=${#files}
echo $N
((N=RANDOM%N))
echo $N
wall=${files[$N]}
echo $wall
cp $wall ~/wall.jpg
答案 0 :(得分:4)
此代码有时会失败,因为RANDOM%N
可能导致零,zsh数组索引以1开头。您应该使用RANDOM%N+1
代替。
答案 1 :(得分:1)
你可以:
setopt ksharrays
启用从零开始的索引。
来自man zshoptions
:
尽可能地模拟ksh数组处理。如果这 选项设置,数组元素从零开始编号,数组 没有下标的参数代替第一个元素 整个数组,并且需要括号来划分子 脚本(
${path[2]}' rather than just
$ path [2]')。