1

我在第一个 expr 中遇到了一个错误

nmin =$(expr ($nr-1)*31)
nmax =$(expr ($nr*31)-1)    
array=`ls *d03_*`   # specify files to be subsetted
for name in ${array[@]:nmin:30}

阅读文档后似乎是一个空格或非常小的事情正在创建错误

我也不知道切片是否正确。

4

2 回答 2

3

您的代码中有几个错误。=首先,您不能在赋值语句的前后放置空格。

nmin=$(expr ($nr-1)*31)
nmax=$(expr ($nr*31)-1)   

第二,expr算术不需要;shell可以自己做。

nmin=$(( ($nr-1)*31 ))
nmax=$(( ($nr*31)-1 ))

第三,分配数组的正确方法是使用括号

array=( `ls *d03_*` ) 

第四,永远不适合这样使用ls。只需将 glob 直接展开到数组中:

array=( *d03_* )

您的for循环实际上几乎是正确的;但是,您应该引用扩展,以便保留每个数组元素中的任何空格。

for name in "${array[@]:nmin:30}"; do

它遍历${array[nmin]}.${array[nmin+29]}

于 2016-02-09T15:44:26.560 回答
0

数组定义需要圆括号。

这将字符串分配给变量x

x=`echo $? $$`
echo "$x"

这将两个值分配给数组:

x=(`echo $? $$`)
echo "${x[@]}"
于 2016-02-09T15:17:15.317 回答