我正在尝试编写一个bash脚本,它允许我使用递增名称自动创建多个目录。
例如,我正在尝试创建名为v0v1,v1v2,...,v40v41的目录。
我尝试使用' for'循环,我在其中创建一个变量并将其设置为等于i + 1的当前值(其中' i'是当前循环迭代),但它没有按预期工作。 我设法让变量增加(并使用' echo'来检查它),但我不能让它成为新目录名的一部分。
我写的代码如下:
for i in {0..40}; do let r=$((i+1)); mkdir v$iv$r; done
但是,生成的目录的名称只包含第一个变量值(即v0,v1,...,v40),并且不包含' v $ r'一点都不
有没有人有任何想法如何在同一个文件名中一次使用两个变量?
答案 0 :(得分:1)
printf 'r=%d ; mkdir v$((r-1))v${r} ;' $(seq 2 41) |sh
根本不需要shell循环。
答案 1 :(得分:0)
for i in {0..40}; do let r=$((i+1)); mkdir v${i}v$r; done
当bash看到表达式v$iv$r
时,它会替换变量iv
和r
。但是,当然,没有iv
。所以bash在空字符串中替换。解决方案是使用大括号来确保bash知道变量名称的结束位置。因此:v${i}v$r
。