Поскольку вы используете символы канала в команде
ls -m ${RAW_DIR}3013_12_r1.fq.gz|${RAW_DIR}3013_12_r2.fq.gz|${RAW_DIR}3013_14_r1.fq.gz ...
, вы только передаете первое имя файла в качестве аргумента ls -m
и создаете канал. Это означает, что оболочка соединит выход одной программы со входом следующей программы. Оболочка попытается выполнить ${RAW_DIR}3013_12_r2.fq.gz
, ${RAW_DIR}3013_14_r1.fq.gz
и т. Д. В качестве программ.
Скорее всего, эти файлы не являются исполняемыми, поэтому вы получаете сообщение об ошибке. (Файл не имеет разрешения на выполнение.) И, скорее всего, это не то, что вам нужно.
Если вы хотите указать более одного аргумента (имени файла) для программы, разделите аргументы пробелом.
Может быть, вы хотите что-то вроде
FILES=`ls -m ${RAW_DIR}3013_12_r1.fq.gz ${RAW_DIR}3013_12_r2.fq.gz ${RAW_DIR}3013_14_r1.fq.gz ${RAW_DIR}3013_14_r2.fq.gz ${RAW_DIR}3013_15_r1.fq.gz ${RAW_DIR}3013_15_r2.fq.gz ${RAW_DIR}3013_16_r1.fq.gz ${RAW_DIR}3013_16_r2.fq.gz ${RAW_DIR}3013_31_r1.fq.gz ${RAW_DIR}3013_31_r2.fq.gz ${RAW_DIR}3013_33_r1.fq.gz ${RAW_DIR}3013_33_r2.fq.gz ${RAW_DIR}3013_34_r1.fq.gz ${RAW_DIR}3013_34_r2.fq.gz ${RAW_DIR}3013_36_r1.fq.gz ${RAW_DIR}3013_36_r2.fq.gz ${RAW_DIR}3013_mCh1_r1.fq.gz ${RAW_DIR}3013_mCh1_r2.fq.gz ${RAW_DIR}3013_mCh2_r1.fq.gz ${RAW_DIR}3013_mCh2_r2.fq.gz ${RAW_DIR}3013_mCh3_r1.fq.gz ${RAW_DIR}3013_mCh3_r2.fq.gz ${RAW_DIR}3013_mCh4_r1.fq.gz ${RAW_DIR}3013_mCh4_r2.fq.gz ${RAW_DIR}3013_nc1_r1.fq.gz ${RAW_DIR}3013_nc1_r2.fq.gz| sed 's/ //g'`
Если вы хотите, чтобы все имена файлов в ${RAW_DIR}
, вы можете использовать
FILES=$(ls -m ${RAW_DIR}*| sed 's/ //g')
или если вы хотите быть более конкретным
FILES=$(ls -m ${RAW_DIR}*.fq.gz| sed 's/ //g')