Bash 如何在for循环中调用i?

Bash 如何在for循环中调用i?,bash,Bash,所以,这个问题似乎是一个特定的问题。是的,因为我不是BASH程序员,而是一个生物学家,为我的日常工作编写了一些有用的脚本。无论如何比如,我有一个for循环,如下所示: for CHR $(seq 1 22); do echo "Processing chromosome ${CHR}"; done 我以前写'seq 1 22',但现在我学会了写$(seq 1 22)。很明显,你写它的方式不同。但是在计算机语言和口译方面有什么不同呢?有人能给我解释一下吗 通过在计算机集群的命令行上简单地

所以,这个问题似乎是一个特定的问题。是的,因为我不是BASH程序员,而是一个生物学家,为我的日常工作编写了一些有用的脚本。无论如何比如,我有一个for循环,如下所示:

for CHR $(seq 1 22); do
    echo "Processing chromosome ${CHR}";
done
我以前写'seq 1 22',但现在我学会了写$(seq 1 22)。很明显,你写它的方式不同。但是在计算机语言和口译方面有什么不同呢?有人能给我解释一下吗

通过在计算机集群的命令行上简单地操作,我学到的另一件事是以不同的方式调用“I”。我过去常做:
$CHR
。但是当我有一个文件名
sometext\u-chr
时,我想在其中添加一个数字(
sometext\u-chr$chr
),这是行不通的。起作用的是
sometext\u chr${chr}
。为什么呢?有人能帮我解释一下区别吗

再说一次,我知道这个问题有点具体——我只是不知道如何用其他方式来界定它——但我希望有人能教我区别

谢谢你,祝你好运

Sander

可以很容易地嵌套
$(…)
,因为括号清楚地指示表达式的开始和结束位置。使用`,嵌套并不是那么简单,因为开始符号和结束符号是相同的

您的第二个示例可能来自内存,因为它不正确
sometext$chr
sometext${chr}
的工作方式相同。也许你真正的意思是这样的情况:

$chr_sometext
${chr}_sometext

这里的关键点是
是变量名中的有效字符。因此,
$chr\u sometext
被解释为变量
chr\u sometext
的值。在
${chr}\u sometext
中,变量显然是
chr
,其后的
\u sometext
是一个文本字符串值。就像你写的
$chrsometext
你不会认为
chr
有什么特别之处。这就是你必须添加澄清大括号的原因。

你的循环缺少
中的关键字
。此外,请尝试将你自己的问题限制为每篇文章一个问题。我敢肯定,所有这些问题之前都已经被问过并回答过了,尽管可能不是在这个组合中。是一个可能的重复…否则我们可能只是在处理一个语法错误。我投票结束这个问题,作为@TomFenech发现的问题的重复,因为这个特定的子问题是唯一一个足够集中,可以作为一个好问题接受的问题。谢谢你的明确回答。有道理。这正是问题所在。我现在将使用的脚本更改为花括号方法。再次感谢。我没有足够的积分来支持你的答案…我是新手…:-(我知道,不用担心,谢谢你的接受!