回答:
これにはBourneシェルfor
ループが設計されたもののごく一部であるため、このためのコマンドまたはシェル組み込みは存在しないと思います。
まず、ダミーfor
ループを使用できます。
for i in `seq 10`; do command; done
または、JimBの提案に従って、シーケンスを生成するためにBashビルトインを使用します:
for i in {1..10}; do command; done
これは、command
毎回実行を10回繰り返します- ;
またはで区切られたパイプまたは一連のコマンド&&
です。$i
変数を使用して、どの反復にいるのかを知ることができます。
このワンライナーをスクリプトとみなすため、不特定の(ただしおそらく有効な)理由で望ましくない場合は、コマンドとして実装できます。
#function run
run() {
number=$1
shift
for i in `seq $number`; do
$@
done
}
使用法:
run 10 command
例:
run 5 echo 'Hello World!'
for
である内蔵の反復のためにbashが。
seq
: {1..10}
.bashrc
場合、指定した関数{1..$number}
は配置されたときに完全に機能します`seq $number`
。
ps aux | grep someprocess
プログラムの変更を一定時間監視したいようです。エドゥアルドはあなたの質問に正確に答える答えを出しましたが、別の方法がありますwatch
::
watch 'ps aux | grep someprocess'
シェルがコマンドを「run watch ps aux」と解釈して結果をパイプすることを避けるために、コマンドを単一引用符で囲んでいることに注意してくださいgrep someprocess
。前のコマンドを実行する別の方法は次のとおりです。
watch ps aux \| grep someprocess
デフォルトでは、watch
2秒ごとに更新されますが、-n
オプションを使用して変更できます。たとえば、1秒の間隔が必要な場合:
watch -n 1 'ps aux | grep someprocess'
ただの楽しみのために
pgrep ssh ;!!;!!;!!;!!;!!;!!
for
が最良の方法のようです。とにかく答えてくれてありがとう。
cmd ;!!
1行で、現在の行の前に入力したコマンドを繰り返すだけではありませんか?2つの個別のhistory
エントリである必要があります。
;
て&&
、最初の障害で停止します。
前の返信と同様ですが、forループは不要です。
seq 10 | xargs -I -- echo "hello"
引数またはオプションなしでseqの出力をxargsにパイプする
echo "hello" 1 2 3 4 5 6 7 8 9 10
ます。xargsは-n 1
、入力ごとに1つのプロセス(数値)と-P 10
並列実行(10並列プロセス)で実行する必要があります。で終わるseq 10 | xargs -n 1 -P 10 echo
。
POSIXの方法
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04_01
x=10
while [ $x -gt 0 ]; do
command
x=$(($x-1))
done
もちろん、1つのライナーにすることができます:
x=10; while [ $x -gt 0 ]; do command; x=$(($x-1)); done
最も移植性の高い方法であるため、プログラムをインストールする可能性が低くなります。
以下は移植性が低くなります。
{1..10}
:bash固有、引数が大きい場合は巨大な行を生成しますseq
:GNUyes
:GNUそして、移植性に飽きたら、GNUを検討してparallel
ください:
sudo apt-get install parallel
seq 100 | parallel echo {}
コマンドを並行して実行し、多くのクールなオプションがあります。
参照:https : //stackoverflow.com/questions/169511/how-do-i-iterate-over-a-range-of-numbers-defined-by-variables-in-bash
sh, zsh, ksh
、およびbash
ほとんどすべてのプラットフォームで十分にサポートされています。csh, tcsh, fish
いくつかのサポートがあります。使用parallel --embed
すると、GNU Parallelがインストールされていない別のシステムに簡単に移動できるスクリプトを作成することもできます。
それは「ウォッチ」になります-procpsを使用するほぼすべてのUNIXシステムの一部である必要があります
システムのfsの変化や興味深い動きを見ることができます。例えば、
watch "df -hP | grep /tmp"
引数としてコマンドを入力するだけです(を参照man watch
)