HIS*_*ISI 8 command-line bash sh
我试图在我的 shell 中的同一个循环中运行两个序列,如下所示:
#!/bin/bash
for i in (1..15) and (20..25) ;
do
echo $i
......
.....other process
done
Run Code Online (Sandbox Code Playgroud)
知道我怎么能做到这一点吗?
Zan*_*nna 10
你只需要大括号扩展
$ for n in {1..3} {200..203}; do echo $n; done
1
2
3
200
201
202
203
Run Code Online (Sandbox Code Playgroud)
我们可以将列表传递给for( )。for i in x y z; do stuff "$i"; done
所以在这里,大括号{ }让 shell 将您的序列扩展为一个列表。您只需要在它们之间放置一个空格,因为 shell 会拆分这些参数列表。
或者,我们可以使用seq(打印数字序列),这里有两个等效的示例:
for i in `seq 1 3` `seq 101 103`; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
for i in $(seq 1 3) $(seq 101 103); do echo $i; done
Run Code Online (Sandbox Code Playgroud)
如果是脚本,对于重复性的任务,可以使用函数:
#!/bin/bash
my_function() { echo "$1"; }
for i in {1..3}; do my_function "$i"; done
for i in {101..103}; do my_function "$i"; done
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
my_function() { for i in `seq $1 $2`; do echo "$i"; done; }
my_function "1" "3"
my_function "101" "103"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2926 次 |
| 最近记录: |