Второе лучше, это плохая форма, чтобы прослушать вывод ls
. Я думаю, что если у вас есть определенные символы в именах файлов, у вас могут возникнуть проблемы, но если вы знаете, что имена входных файлов «нормальные», вы можете обойтись, просто используя кавычки, например:
for sample in /data/*.fastq; do
gsnap -D ./cinxia "./data/${sample}.fastq"
done
Кавычки сделают так, например, если в имени вашего файла есть пробелы:
gsnap -D ./cinxia "./data/file name with spaces.fastq"
Вы можете видеть, что без кавычек командная строка будет видеть, что это много слов, а не однофайл. Будьте осторожны при цитировании и расширении в bash, это сбивает с толку! В некоторых ситуациях вы получаете плохие результаты даже при использовании кавычек.
Что бы произошло, если бы у вас был файл с именем badfile; rm -rf /
?