В bash я знаю, что можно написать forцикл, в котором некоторая переменная управления цикла iперебирает заданные целые числа. Например, я могу написать скрипт оболочки bash, который печатает целые числа от 1 до 10:
#!/bin/bash
for i in {1..10}
do
echo $i
done
Можно ли вместо этого перебрать переменную управления циклом, которая является строкой, если я предоставлю список строк? Например, предположим, что у меня есть строка, fnameкоторая представляет имя файла. Я хочу вызвать набор команд для каждого имени файла. Например, я мог бы хотеть напечатать содержание fnameиспользования команды как это:
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
Другими словами, на первой итерации fnameдолжно иметь значение fname="a.txt", а на второй итерации fnameдолжно иметь значение fname="b.txt"и так далее. К сожалению, похоже, что приведенный выше синтаксис не совсем корректен. Я хотел бы получить вывод:
a.txt
b.txt
c.txt
но когда я пробую приведенный выше код, я получаю этот вывод:
{A.txt,
b.txt,
c.txt}
Не могли бы вы помочь мне определить правильный синтаксис, чтобы я мог итеративно изменять значение / содержимое переменной fname? Спасибо за ваше время.
{} и на ,с. Альтернатива состоит в том, чтобы удалить пробелы. Так что либо "a.txt" "b.txt" "c.txt"или {"a.txt","b.txt","c.txt"}. Но я предпочитаю {a..c}.txtвместо этого.
{}, вам не нужно ничего зацикливать (разделенный пробелами) список