我在Linux下的bash脚本中有以下几行:
...
mkdir max15
mkdir max14
mkdir max13
mkdir max12
mkdir max11
mkdir max10
...
将它们放在循环中的语法如何,这样我就不必编写数字(15,14 ..)?
答案 0 :(得分:16)
使用bash,无需使用seq
之类的外部命令来生成数字。
for i in {15..10}
do
mkdir "max${i}"
done
或只是
mkdir max{01..15} #from 1 to 15
mkdir max{10..15} #from 10 to 15
如果您的数字是动态生成的,则可以使用C样式进行循环
start=10
end=15
for((i=$start;i<=$end;i++))
do
mkdir "max${i}"
done
答案 1 :(得分:7)
此任务无需循环:
mkdir max{15..10} max0{9..0}
...但是如果你需要一个循环结构,你可以使用以下之一:
for i in $(seq [ <start> [ <step> ]] <stop>) ; do
# you can use $i here
done
或
for i in {<start>..<stop>} ; do
# you can use $i here
done
或
for (( i=<start> ; i < stop ; i++ )) ; do
# you can use $i here
done
或
seq [ <start> [ <step> ]] <stop> | while read $i ; do
# you can use $i here
done
请注意,最后一个不会将$ i的值保留在循环之外,因为启动子shell的|
答案 2 :(得分:4)
for a in `seq 10 15`; do mkdir max${a}; done
seq
会生成从10
到15
的数字。
编辑:多年来我习惯了这种结构。但是,当我观察到其他答案时,{START..STOP}
更好。现在我必须习惯于以更好的方式创建目录:mkdir max{10..15}
。
答案 3 :(得分:3)
使用for-loop
答案 4 :(得分:1)
for i in {1..15} ; do
mkdir max$i
done