Предположим, что я хочу выполнить команду ls десять раз (несмотря на то, что она нецелесообразна, поскольку она будет отображать только содержимое каталога 10 раз), есть ли эквивалент записи следующего:
for (i = 0, i < 10, i++) {
ls
}
Теперь предположим, что я хочу выполнить Java-программу десять раз, каждый раз с другим входным файлом. Есть ли эквивалент написанию следующего:
fileList = [input1, input2, ....., input10]
for (i = 0, i < 10, i++) {
java myProgram fileList[i]
}
Я предполагаю, что есть какой-то язык, на котором я мог бы писать такие скрипты. Я пробовал искать онлайн, но мои знания являются базовыми, и я не мог найти ничего, что я понял.
Этот язык является самой программой, в которой вы связываете команду.
Запрос командной строки предоставляется оболочкой. Оболочка Ubuntu по умолчанию - Bash (вы должны начать с учебников и обратиться к руководству для справки).
Чтобы выполнить несколько связанных команд последовательно, вы можете использовать командную строку . Вы можете сохранить список имен файлов в переменной массива.
file_list=(input1 input2 … input10)
for file in "${file_list[@]}"; do
java myProgram "$file"
done
Элементы синтаксиса, которые я использовал:
Назначение переменной массива: variable=(element1 element2 element3) (нет пробелов вокруг [ f3]) Использование переменной массива: "${variable[@]}" (да, это странно, по историческим причинам) Использование строковой переменной: "$variable" Для цикла: for variable in list; do instructions; done (; эквивалентно новой строке)