我在第一个 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}
阅读文档后似乎是一个空格或非常小的事情正在创建错误
我也不知道切片是否正确。
您的代码中有几个错误。=
首先,您不能在赋值语句的前后放置空格。
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]}
数组定义需要圆括号。
这将字符串分配给变量x
:
x=`echo $? $$`
echo "$x"
这将两个值分配给数组:
x=(`echo $? $$`)
echo "${x[@]}"