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