我想检索文件名的第一部分并遍历文件列表。文件名已配对,我正在尝试在每对上运行程序。这就是他们的样子:
H1T1A-left.fastq.gz
H1T1A-right.fastq.gz
我可以删除所有内容 - 获得唯一名称:
for d in *left*; do
echo $d | cut -d- -f1;
echo "Mapping $NAME";
done
H1T1A
H1T1B
H1T1C
H1T2A
H1T2B
但是如果我想将其加载到变量“NAME”中,那么我可以将它传递给程序:
for d in *left*; do
NAME = echo $d | cut -d- -f1;
echo "Mapping $NAME";
done
我收到错误:
NAME: command not found
Mapping
NAME: command not found
Mapping
我希望能够将$ NAME作为每对的文件名的一部分传递:
>program "$NAME"-left.file "$NAME"-right.file
答案 0 :(得分:3)
删除作业=
周围的空白
如果要将commnad的输出存储在某个变量中,请将命令放在$(yourcommand)
#!/bin/bash
for d in *left*; do
NAME=$(echo $d | cut -d- -f1)
echo "Mapping $NAME";
done
答案 1 :(得分:-2)
等号周围不应有空格。 虽然这样的东西有用,包括引号:let" i = 1 + 2"