В 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
вместо этого.
{}
, вам не нужно ничего зацикливать (разделенный пробелами) список