1

我遇到了以下 bourne shell script snanshot:

hosts=( $(cat $TOP/rhost))
j=0
for k in {1..20}
do
  host=${hosts[$j]}
  su  user$k -c  "/usr/bin/rsh $host $TOP/test.sh $JOBNUM $QUEUE $TIME $TOP $LSF_ENVDIR" &
  j=`expr $j + 1`
  j=$(($j%${#hosts[@]}))
done

一般来说,我知道这个脚本会迭代多次以在主机中的每个主机上执行 test.sh。但我不知道这条线是做什么的:

  j=$(($j%${#hosts[@]}))

似乎 j mod 一些东西,它是从 #hosts[@] 计算出来的,这里的“#”和“@”是什么意思?谢谢。

4

1 回答 1

0

${#hosts[@]}表示数组变量“hosts”中的项目数。它特定于 bash,因为 Bourne shell 没有数组变量。

于 2013-11-06T11:18:27.520 回答