Создание документов не работает
Здравствуйте, я пытаюсь создать папки и назвать их в соответствии с входными параметрами Что не так в этом сценарии?
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 ответ
- Примите решение, если это
dstep
или жеdlstep
, Из этой ошибки Bash:
for i in {1..$n}
BashParser выполняет BraceExpansion перед любыми другими расширениями или заменами. Таким образом, код расширения скобки видит буквальный
$n
, который не является числовым, и поэтому он не расширяет фигурные скобки в список чисел. Это делает почти невозможным использование расширения фигурных скобок для создания списков, размер которых известен только во время выполнения.Сделайте это вместо этого:
for ((i=1; i<=n; i++)); do ... done
Или использовать
seq
,Ваш сценарий читает
$cindex_
как переменная с именемcindex_
, Ты хочешь${cindex}_
,Кавычки переменные правильно. Это может быть не решающим здесь, но в целом. Например:
mkdir "${cindex}_$dindex"
Там нет шебанга. Это не имеет значения, если вы поставили сценарий; но если вы запустите его, там должен быть как Шебанг
#!/bin/bash
или же#!/usr/bin/env bash
, Потому что$1
,$2
и т.д. Я предполагаю, что скрипт предназначен для запуска.