Bash - как сделать цикл последней цифры переменной - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь автоматизировать создание папок.Каждая папка должна иметь номер в начале имени файла (увеличивается на цикл for [$ i]. Кроме того, оставшаяся часть имени папки должна создаваться переменными, которые составляются как [folder_x], где [x] долженбыть также усиленным циклом.

Чтобы быть более конкретным. Как построить строку, которая объединяется циклами for [$ i] и переменной, которая вызывается,но в конце также следует использовать [$ i]?

Подробнее см. ниже:

#!/bin/bash

# Variables to be used
folder_1=1-folderOne
folder_2=2-folderTwo
folder_3=3-folderThree

# This is the folder names that should be created:
  # mkdir /tmp2/1-folderOne
  # mkdir /tmp2/2-folderTwo
  # mkdir /tmp2/3-folderThree

# The for loop should combine the [$i] and above [folder_x],
# where the [x] should also be increased by the loop.
# Below is what i have right now:
# Note! The text "created-by-forloop" is just dummy text,
# and should be replace by the real solution.


for i in 1 2 3
do
  if [ ! -d /tmp2/$i-created-by-forloop ]; then
    mkdir -p /tmp2/$i-created-by-forloop;
  fi
done

1 Ответ

0 голосов
/ 05 октября 2018

Используйте массив имен вместо отдельных переменных для каждой:

numbers=(One Two Three)
for i in "${!numbers[@]}" ; do
    mkdir /tmp2/$((i+1))-folder"${numbers[i]}"
done

Цикл повторяет $ i по индексам массива.Нам нужно добавить 1 к индексу, так как массивы начинаются с нуля, но мы хотим, чтобы наши файлы были пронумерованы от 1, а не от 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...