Loo*_*oom 5 command-line bash pipe
有时命令在管道命令中重复。例如(只是为了说明):
$ grep -lF 'pattern' ./foo/**/*.bar | xargs dirname | xargs dirname
Run Code Online (Sandbox Code Playgroud)
有没有办法缩短链接命令?例如,我有一个命令:
$ ... | some-command | some-command | some-command | ...
Run Code Online (Sandbox Code Playgroud)
I'd like to get same result with something like to the following
$ ... | (some-command) ^ 3 | ...
Run Code Online (Sandbox Code Playgroud)
Of course, it wouldn't work, but it illustrates what I'd like to make.
不太漂亮,但我相信你可以使用 while 和 for 循环来做你想做的事。
$ seq 5 | while read -r f; do for i in {1..3}; do echo "[$i]: blah $f";done; done
[1]: blah 1
[2]: blah 1
[3]: blah 1
[1]: blah 2
[2]: blah 2
[3]: blah 2
[1]: blah 3
[2]: blah 3
[3]: blah 3
[1]: blah 4
[2]: blah 4
[3]: blah 4
[1]: blah 5
[2]: blah 5
[3]: blah 5
Run Code Online (Sandbox Code Playgroud)
这是分解的结构:
$ <CMD> | while read -r f; do
for i in <range>; do
...do command some num. of times...
done
done
Run Code Online (Sandbox Code Playgroud)
查看此问题的另一种方法是创建一个 shell 函数 ( function () {...}
) 并调用它而不是xargs ...
多次。该函数可以接受 2 个参数、运行次数参数和运行参数。
您还可以创建一个包含 for 循环的 shell 脚本,您可以向其中传递 2 个参数。运行 X 的次数,以及对 X 进行操作的参数。
归档时间: |
|
查看次数: |
590 次 |
最近记录: |