【发布时间】:2015-01-14 15:50:55
【问题描述】:
我在子目录中有一系列文件,我想根据输入文件名和用于处理文件的各种参数(模型)循环、处理和命名。
例如像 AG005574、AG004788、AG003854 这样的文件名和像 ATd、PZa、RTK1 这样的参数/模型值,所以我想以像这样的文件结尾 AG005574_ATd AG005574_PZa AG005574_RTK1 AG004788_ATd AG004788_PZa 等等。 我遍历子文件夹,运行进程并输出结果,如下所示:
#!/usr/bin/bash
model=$1
for file in $(find /path/to/files/*/ -type f -name 'AG*.fa');
do output=${model}"_"${file} ;
process_call --out=$output."tab" --options ../Path/to/model/$1.hmm $file ;
echo $file
done
我希望能够在命令行上指定模型(因此模型=$1)。但是,我的方法通常不起作用。我可以使用
获得由模型命名的输出do output=$model ;
但这也只写入最后处理的文件,因为它会覆盖所有其他文件(并且不使用输入文件名)。非常感谢任何帮助/辅导。
【问题讨论】:
-
一般来说,行尾不需要分号。将
output=${model}"_"${file}替换为output="${model}_${file}"。这些是一般性观察,不是您问题的答案。
标签: bash parameters output filenames