Создание документов не работает

Здравствуйте, я пытаюсь создать папки и назвать их в соответствии с входными параметрами Что не так в этом сценарии?

root=$1
clcount=$2
clstep=$3
delay=$4
dstep=$5

echo  $root
echo  $clcount
echo  $clstep
echo  $delay
echo  $dstep

echo creating docs

for dindex in {$delay..100..$dlstep}
  do 
     for cindex in {$clcount..1..$clstep}
     do
        fname=$cindex_$dindex
        rm -rf $fname
        mkdir $cindex_$dindex        
     done
done

echo All finished 

Скрипт не создаст какую-либо папку.. и он как-то не объединяет значения $cindex а также dindex в строке.

1 ответ

Решение
  1. Примите решение, если это dstep или же dlstep,
  2. Из этой ошибки Bash:

    for i in {1..$n}

    BashParser выполняет BraceExpansion перед любыми другими расширениями или заменами. Таким образом, код расширения скобки видит буквальный $n, который не является числовым, и поэтому он не расширяет фигурные скобки в список чисел. Это делает почти невозможным использование расширения фигурных скобок для создания списков, размер которых известен только во время выполнения.

    Сделайте это вместо этого:

    for ((i=1; i<=n; i++)); do
    ...
    done
    

    Или использовать seq,

  3. Ваш сценарий читает $cindex_ как переменная с именем cindex_, Ты хочешь ${cindex}_,

  4. Кавычки переменные правильно. Это может быть не решающим здесь, но в целом. Например:

    mkdir "${cindex}_$dindex"
    
  5. Там нет шебанга. Это не имеет значения, если вы поставили сценарий; но если вы запустите его, там должен быть как Шебанг #!/bin/bash или же #!/usr/bin/env bash, Потому что $1, $2 и т.д. Я предполагаю, что скрипт предназначен для запуска.

Другие вопросы по тегам