[英]editing loop in bash script to only run over 3 files
我之前没有真正使用过 bash,所以我不确定如何操作代码以供我使用。
我有以下内容:
cmd=""
for i in {1..22}
do
bgenix -g file1${i}_t.bgen -incl-range list.txt > c${i}.bgen
cmd=$cmd"c${i}.bgen "
done
但是我只需要对 22 个文件中的 3 个执行此操作。
我可以使用下面的代码吗
for i in {1, 3, 17}
到 select 只有这些文件吗?
谢谢!
如下删除花括号应该可以:
for 1 3 17 ; do
bgenix -g file1${i}_t.bgen -incl-range list.txt > c${i}.bgen
cmd=$cmd"c${i}.bgen "
done
既然你说你是 bash 的新手,我也只是指出我发现的一个小问题。
默认情况下,bash 解释器将空格视为字段分隔符。 因此,如果您的cmd
变量中有空格字符,并且您重用它,bash 将进行分词,这可能会给您带来一些意想不到的结果。 为了保留和处理空格字符,您必须小心地在整个分配的部分上使用双引号。
实际上,即使变量尚不包含空格(或任何其他未知的未来字段分隔符),这样做也是一个好习惯。 所以,
cmd=""
for i in 1 3 17
do
bgenix -g file1"${i}"_t.bgen -incl-range list.txt > c"${i}".bgen
cmd="${cmd}c${i}.bgen "
done
您可能会问,为什么要双引号"${i}"
? 这都是关于好习惯的。
此外,您的案例准确地说明了为什么使用花括号。 没有它们 bash 将寻找一个名为$cmdc
的变量。 祝你好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.