【问题标题】:Bash looping through custom list of stringsBash 循环遍历自定义字符串列表
【发布时间】:2023-03-12 17:22:02
【问题描述】:

我正在尝试做一个嵌套循环,其中一个是索引一个数组,但我也想遍历一个自定义的字符串列表,它恰好只有字母 C 和 I,中间没有任何内容。我的问题是,循环遍历这个自定义的字母/字符串列表的正确语法是什么?我看到有些人用括号{}来指定,我做错了什么?

abc=(thing1 thing2 thing3 thing4)

for j in C I; do
  for i in 0 1 2 3; do
    echo "grep 'ITEM_${abc[i]}' /folder1/folder2/THING_$jS_$i.sorted/585_10$jS_$i.sorted.gtf"
  done
done

【问题讨论】:

  • 到底是什么问题?我猜你不想要echo 那里。
  • 问题是我想遍历两种文件夹类型并以两种输出类型结束,一种是迭代的 C,另一种是数组的 I(对于每个 j)
  • 显示您想要的输出将是开始使这个问题变得可回答的好地方。顺便说一句,当你想要${j}S_ 时,你是在写$jS_ 吗?

标签: arrays bash loops nested


【解决方案1】:

由于其他用户不会回答这个问题,而是想通过适当的引用来解决问题,这实际上并没有解决原始问题是关于什么的,所以答案很简单,您需要创建一个自定义数组,该数组由只有 C 和 I,您可以为您尝试编辑其名称的所述文件的每个实例调用它们。

【讨论】:

    【解决方案2】:
    • 你的引号是错误的:不要在变量周围使用单引号
    • 使用${var} 将变量与周围文本分开,例如:/THING_${j}S_${i}.sorted

    了解如何在 shell 中正确引用,这非常重要:

    “双引号”每个包含空格/元字符和每个扩展的文字:"$var""$(command "$var")""${array[@]}""a & b"。将'single quotes' 用于代码或文字$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'。看 http://mywiki.wooledge.org/Quotes
    http://mywiki.wooledge.org/Arguments
    http://wiki.bash-hackers.org/syntax/words

    【讨论】:

    • 对于此答案中确定的两个问题,我们已经有重复的问答条目。如果一个问题没有引发任何新问题,通常适合投票关闭为重复(可能有多个重复链接到一个问题,尽管它可能需要有足够代表的人直接编辑重复列表以制定)。
    • 谢谢,但是这是根据某种分层准则来解决我的代码格式以提高可读性,但实际上并没有解决我的问题的核心。
    • 您的代码“修复”仍然没有回答我问题的核心。它正在遍历一组我不想要的任意字母,但我想我会用另一个数组自己修复它。可以使用一个简单的答复,例如,不,您不能遍历一组自定义循环参数。相反,“你错了,学习如何正确地做到这一点”。感谢您的光顾评论。
    猜你喜欢
    • 2014-09-19
    • 2023-01-24
    • 2022-01-16
    • 2021-04-02
    相关资源
    最近更新 更多