Сценарий от @chris-johnsen выглядит так, как будто он будет работать, но объяснение имеет некоторые проблемы:
# Most of the xterm extensions are for function-keys. Since patch #94 (in # 1999), xterm has supported shift/control/alt/meta modifiers which produce # additional function-key strings. Some other developers copied the feature, # though they did not follow xterm's lead in patch #167 (in 2002), to make # these key definitions less ambiguous.
emacs
, другом приложении termcap). По поводу стандартизации:
"~"
. Учитывая сдвиг, это добавило одну из причуд, отмеченных в вопросе. AX
) разработаны так, что их можно проверить из termcap, ни одна из расширенных специальных клавиш не может быть проверена с помощью интерфейса termcap. Подбирает только один файл, потому что$1
— это всего лишь один файл .
*
интерпретируется при вызове скрипта, поэтому ваш вызов
sh merge_sam_pbs.sh bams-lab/*.name-sorted.fixmate.sorted.dedup.sam
выдается как
sh merge_sam_pbs.sh "bams-lab/1.name-sorted.fixmate.sorted.dedup.sam" "bams-lab/2.name-sorted.fixmate.sorted.dedup.sam" "bams-lab/3.name-sorted.fixmate.sorted.dedup.sam"
с $1
, тогда "bams-lab/1.name-sorted.fixmate.sorted.dedup.sam"
.
Вы хотите использовать "$@"
в цикле for
:
samlist=$(for sam in "$@"; do echo "I=$sam "; done)
или лучше заменить цикл for наprintf
:
samlist=$(printf 'I=%s\n' "$@")
или даже лучше для вашего варианта использования, добавьте кавычки и пробел вместо новой строки:
samlist=$(printf 'I="%s" ' "$@")