bash:对于循环,两个变量链接
我有以下问题;包含以下内容的两个目录:bash:对于循环,两个变量链接,bash,variables,loops,for-loop,Bash,Variables,Loops,For Loop,我有以下问题;包含以下内容的两个目录: dir1:类似以下内容的文件列表: file1.fq file2.fq file3.fq 等等 dir2:类似以下内容的文件列表: file1.fq.sa file2.fq.sa file3.fq.sa 我要做的是运行一个同时使用file1.fq和file1.fq.sa的命令 我尝试了以下循环: fq=dir1/* sa=dir2/* for fqfiles in $fq; do for sa_files in $sa; do mycom
- dir1:类似以下内容的文件列表:
- dir2:类似以下内容的文件列表:
fq=dir1/*
sa=dir2/*
for fqfiles in $fq;
do
for sa_files in $sa;
do
mycommand ${sa_files} ${fqfiles} > ${sa_files}.cc &
done
done
问题是我的循环执行以下操作:
mycommand file1.fq.sa file1.fq > file1.fq.sa.cc #correct
而且
mycommand file1.fq.sa file2.fq > file1.fq.sa.cc #wrong!
等等…在一个几乎无限的循环中
我希望我的循环能够产生如下结果:
mycommand file1.fq.sa file1.fq > file1.fq.sa.cc
mycommand file2.fq.sa file2.fq > file2.fq.sa.cc
mycommand file3.fq.sa file3.fq > file3.fq.sa.cc
等等
你能帮帮我吗
谢谢大家!
Fabio您可以循环使用
dir1
,在文件上使用,然后以dir2
作为前缀,并附加所需的扩展名。您可能还希望检查第二个目录中的文件,并仅在两个文件都可用时运行命令
for f in dir1/*.fq; do
b=$(basename "$f")
f2=dir2/"$b".sa
if test -f "$f2"; then
mycommand "$f2" "$f" >"$b".sa.cc
fi
done
如果不需要目录部分,请使用此部分
mycommand "$b".sa "$b" >"$b".sa.cc
您可以循环使用
dir1
,在文件上使用,然后以dir2
作为前缀,并附加所需的扩展名。您可能还希望检查第二个目录中的文件,并仅在两个文件都可用时运行命令
for f in dir1/*.fq; do
b=$(basename "$f")
f2=dir2/"$b".sa
if test -f "$f2"; then
mycommand "$f2" "$f" >"$b".sa.cc
fi
done
如果不需要目录部分,请使用此部分
mycommand "$b".sa "$b" >"$b".sa.cc
伟大的它起作用了!非常感谢。我将详细研究basename选项!伟大的它起作用了!非常感谢。我将详细研究basename选项!