2015-04-30 4 views
1

Я хотел бы использовать этот скрипт для открытия 5 файлов по zenity, но каждый файл будет обрабатываться (по «do») отдельно. Является ли это возможным?Открывайте файлы по zenity и обрабатывайте их один за другим

FILES=($(zenity --file-selection --multiple --title "Pick a file")) 

    for i in "$FILES" 
    do 
    fastx_quality_stats -i $i -o ${i%.fastq}quality.txt 
    bash /home/fil/Desktop/Pipeline_MISEQ/fastq_quality_boxplot_graph.sh -i ${i%.fastq}quality.txt -o ${i%fastq}quality_distribution.png 
    bash fastx_nucleotide_distribution_graph.sh -i ${i%.fastq}quality.txt -o ${i%.fastq}distribuiton_nucleotides.png 
    mv *quality.txt *.png fastq_stat/ 
    done  
+0

Можете ли вы пояснить, что означает «будет обрабатываться отдельно»? – dekkard

+0

Я выбираю 5 файлов, и каждый файл будет обрабатываться скриптами после этого. Поэтому я выбираю файл 1 2 3 4 5 и в первом цикле будет процесс 1 во втором цикле будет файл процесса 2 и т. Д. – Vonton

ответ

0

Попробуйте так (обратите внимание на параметр --separator):

#! /bin/bash 

OLDIFS="$IFS" 
IFS='-' 
FILES=($(zenity --file-selection --multiple --separator='-' --title "Pick a file")) 
IFS="$OLDIFS" 

for file in "${FILES[@]}" 
do 
    echo $file 
done 

Ссылка: https://askubuntu.com/questions/579948/can-simple-scripts-use-gui-file-manager-to-select-file

+0

Это не сработает. «fastx_quality_stats: не удалось открыть файл ввода» /home/fil/Desktop/MISEQ/7102-14_S6_L001_R1_001.fastq|/home/fil/Desktop/MISEQ/7102-14_S6_L001_R2_001.fastq|/home/fil/Desktop/MISEQ/7123- 14_S8_L001_R1_001.fastq ': Нет такого файла или каталога " – Vonton

+0

Я вижу, где проблема, но я действительно не знаю, как это исправить .. – Vonton

1

Проблема заключается в том, что кажется, что разделитель по умолчанию между имен файлов | (по крайней мере на моя машина), поэтому вам необходимо использовать опцию --separator, чтобы иметь возможность использовать непосредственно результат:

FILES=$(zenity --file-selection --multiple --separator=' ' --title "Pick a file") 
for f in $FILES ; do 
    echo "File: $f" 
done 
+0

Это действительно отличная идея, я пропустил ее. на данный момент я не получаю ошибку, но результаты только для первого выбранного образца :( – Vonton

+0

Ну: он работает для меня. Вы действительно выбираете несколько файлов (с помощью клавиш Shift и/или Ctrl)? – Anne

+0

Да, я сделал :-) Если я использую эхо, я получаю имена всех файлов правильно. Но для моей трубы это проблема, я получаю только результат для первого файла :-( – Vonton

Смежные вопросы