В bash, я знаю, що можна написати for
цикл, в якому деяка змінна керування циклом i
перебирає задані цілі числа. Наприклад, я можу написати скрипт bash shell, який друкує цілі числа між 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
замість цього.
{}
, вам не потрібно нічого перебирати на (обмежений пробілом) список