repeat – замена for (( … ))

  1. #!/bin/bash -e
  2.  
  3. # $1: count
  4. # stdin: action(s)
  5.  
  6. let i="$1"
  7.  
  8. unset commands
  9. while read cmd; do
  10.     commands+=("$cmd")
  11. done
  12.  
  13. until [[ "$i" == "0" ]]; do
  14.     for cmd in "${commands[@]}"; do
  15.         eval "$cmd"
  16.     done
  17.  
  18.     (( i-- ))
  19. done
Примеры использования:
  1. $ repeat 3 <<< ls ~
  2. bin  configs  desktop  devel  downloads  github  linux  miscellanea  multimedia  music  pictures  public  secure
  3. bin  configs  desktop  devel  downloads  github  linux  miscellanea  multimedia  music  pictures  public  secure
  4. bin  configs  desktop  devel  downloads  github  linux  miscellanea  multimedia  music  pictures  public  secure

  1. $ mkcd /tmp/test
  2. mkdir: created directory '/tmp/test'
  3. $ repeat 5 <<< 'echo "$RANDOM" > "$RANDOM"'
  4. $ ls
  5. 1188  12704  13387  19403  8285

  1. $ repeat 2 <<-"EOF"
  2. echo foo
  3. echo bar
  4. EOF

Реклама

Мы в соцсетях

tw tg yt gt