Bash - 字符串在for循环中不起作用

时间:2018-01-26 19:04:46

标签: bash

我想检索文件名的第一部分并遍历文件列表。文件名已配对,我正在尝试在每对上运行程序。这就是他们的样子:

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

2 个答案:

答案 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"