ファイルのリストをループして、その数に応じて操作を適用しようとしています。最初に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/*)
ローカルでは問題なく動作しましたが、これをシェル コードとしてスネークメイクワークフローに使用すると、構文エラーがスローされます。
syntax error near unexpected token `('
bashインタープリターに問題があると思いますか?これらのファイルを他にどのようにループできるか手がかりはありますか?
ありがとう
編集:私も試しました
files=$data$sam/*
出力する
echo ${files[0]}
data2/Scerevisiae-Pho4/GSM730517/*