您好,我正在尝试生成文件夹并根据输入参数命名它们。这个脚本有什么问题?
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
。 -
for i in {1..$n}
BashParser 在执行任何其他扩展或替换之前执行 BraceExpansion。因此,括号扩展代码看到的文字
$n
不是数字,因此它不会将花括号扩展为数字列表。这使得使用括号扩展来创建仅在运行时才知道大小的列表几乎不可能。这样做:
for ((i=1; i<=n; i++)); do ... done
或者使用
seq
。 您的脚本将读取
$cindex_
名为 的变量cindex_
。您想要${cindex}_
。正确引用变量。这可能在这里并不重要,但一般来说如此。例如:
mkdir "${cindex}_$dindex"
没有 shebang。如果您获取了脚本,这无关紧要;但如果您运行它,应该有一个类似
#!/bin/bash
或 的shebang#!/usr/bin/env bash
。由于等$1
。$2
我猜这个脚本是要运行的。