Bash цикл через пользовательский список строк - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь сделать вложенный цикл, одним из которых является индексирование массива, но я также хочу перебрать пользовательский список строк, в котором встречаются только буквы 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

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Поскольку другие пользователи не будут отвечать на вопрос и вместо этого захотят бригадировать правильное цитирование, которое на самом деле не касается сути исходного вопроса, ответ прост: вам нужно создать собственный массив, состоящий из просто C и I, которые вы можете вызывать для каждого экземпляра указанного файла, имя которого вы пытаетесь изменить.

0 голосов
/ 29 августа 2018
  • Ваши кавычки неверны: не используйте одинарные кавычки вокруг переменных
  • отделяет переменные от окружающего текста с помощью ${var}, например: /THING_${j}S_${i}.sorted

Узнайте, как правильно цитировать в оболочке, это очень важно:

"Двойная кавычка" - каждый литерал, содержащий пробелы / метасимволы и каждое расширение: "$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 / синтаксис / слова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...