我一直在尝试循环文件列表并根据它们的数量对它们应用操作。我第一次尝试使用该ls
命令,但输出不是列表:
data="data2/Scerevisiae-Pho4/"
results="results3/"
samples=( "GSM730517" "GSM730528" )
if [ ! -d $results ]
then
mkdir $results
fi
for sam in ${samples[@]}
do
if [ ! -d $results$sam ]
then
mkdir $results$sam
fi
echo -e "Reading $sam directory $data$sam... \n"
files=$(ls $data$sam)
echo ${files[0]}
done
输出
echo ${files[@]}
SRR217304.sra SRR217305.sra
echo ${files[0]}
SRR217304.sra SRR217305.sra
我尝试了这种不同的语法:
files=($data$sam/*)
它在本地运行良好,但后来我将其用作 shell 代码到蛇形工作流程中,然后它引发语法错误:
syntax error near unexpected token `('
我猜这是bash解释器的问题?任何线索我还能如何遍历这些文件?
谢谢
编辑:我也试过
files=$data$sam/*
哪个输出
echo ${files[0]}
data2/Scerevisiae-Pho4/GSM730517/*