zsh回声的副作用?

时间:2010-06-01 23:56:08

标签: zsh

由于某种原因,这个脚本将与最后的所有'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

2 个答案:

答案 0 :(得分:4)

此代码有时会失败,因为RANDOM%N可能导致零,zsh数组索引以1开头。您应该使用RANDOM%N+1代替。

答案 1 :(得分:1)

你可以:

setopt ksharrays

启用从零开始的索引。

来自man zshoptions

  

尽可能地模拟ksh数组处理。如果这                 选项设置,数组元素从零开始编号,数组                 没有下标的参数代替第一个元素                 整个数组,并且需要括号来划分子                 脚本(${path[2]}' rather than just $ path [2]')。