【发布时间】:2010-10-24 09:14:13
【问题描述】:
我在 Linux 下的 bash 脚本中有以下几行:
...
mkdir max15
mkdir max14
mkdir max13
mkdir max12
mkdir max11
mkdir max10
...
将它们置于循环中的语法如何,这样我就不必写数字 (15,14..)?
【问题讨论】:
标签: bash
我在 Linux 下的 bash 脚本中有以下几行:
...
mkdir max15
mkdir max14
mkdir max13
mkdir max12
mkdir max11
mkdir max10
...
将它们置于循环中的语法如何,这样我就不必写数字 (15,14..)?
【问题讨论】:
标签: bash
使用 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
【讨论】:
此任务不需要循环:
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
【讨论】:
for a in `seq 10 15`; do mkdir max${a}; done
seq 将生成从10 到15 的数字。
编辑:多年来我已经习惯了这种结构。但是,当我观察到其他答案时,{START..STOP} 确实要好得多。现在我必须习惯以更好的方式创建目录:mkdir max{10..15}。
【讨论】:
使用for-loop
【讨论】:
for i in {1..15} ; do
mkdir max$i
done
【讨论】: