シェルで繰り返し処理

7b687d32752421ed7bdc2428e5e4b8e6?s=47 papiron
April 30, 2016

 シェルで繰り返し処理

第22回シェル芸勉強会の午前の部で、福岡サテライト独自にやった初心者向けの内容です。

7b687d32752421ed7bdc2428e5e4b8e6?s=128

papiron

April 30, 2016
Tweet

Transcript

  1. γΣϧͰ܁Γฦ͠ॲཧ USP༑ͷձ @papiron

  2. ܁Γฦ͠ॲཧ • ίϯϐϡʔλͷಘҙٕ • σʔλॲཧͷجຊ • ϓϩάϥϛϯάݴޠʹඞͣ౥ࡌ

  3. ܁Γฦ͠ॲཧ • γΣϧεΫϦϓτͰ͸ʁ • ϫϯϥΠφʔͰ͸ʁ • ϑΟϧλͱ͸ʁ • ߴ଎ॲཧ͢Δʹ͸ʁ

  4. ͓୊ ӈͷΑ͏ͳ ࿈ଓ͢ΔจࣈྻΛ ग़ྗΛ͢Δํ๏Λ ߟ͑ͯΈΔ ༽͕1ඖ ༽͕2ඖ ɾɾ ɾɾ ༽͕99ඖ

    ༽͕100ඖ
  5. ੍ޚߏ଄Λ࢖͏(1) $ n=1;while [ $n -le 100 ]; do echo

    '羊 が'$n'匹'; n=`expr $n + 1`; done 羊が1匹 羊が2匹 .. .. 羊が99匹 羊が100匹 γΣϧͰ΋੍ޚߏ଄͕࢖͑Δ whileϧʔϓͰ܁Γฦ͠ॲཧ
  6. ੍ޚߏ଄Λ࢖͏(1) #!/bin/sh n=1 while [ $n -le 100 ] do

    echo '羊が'$n'匹' n=`expr $n + 1` done ϫϯϥΠφͰ͸ݟʹ͍͘ͷͰ γΣϧεΫϦϓτͰهࡌ
  7. ਺ྻσʔλ࡞੒ͷํ๏ $ seq 1 100 1 2 .. 100 bashͷϒϨʔεల։

    Λ࢖͏ $ echo {1..100} 1 2 3 .. 99 100 seqίϚϯυΛ࢖͏
  8. ੍ޚߏ଄Λ࢖͏(2) $ for n in `seq 100`; do echo '羊が'$n'匹';

    done $ for n in {1..100} ; do echo '羊が'$n'匹'; done 1͔Β100ͷ਺ྻΛ४උ ܁Γฦ͠ॲཧ͸forϧʔϓΛ࢖༻ `seq 100`͸γΣϧͷίϚϯυஔ׵ػೳ
  9. ੍ޚߏ଄Λ࢖͏(2) #!/bin/sh for n in `seq 100` do echo '羊が'$n'匹'

    done ϫϯϥΠφͰ͸ݟʹ͍͘ͷͰ γΣϧεΫϦϓτͰهࡌ
  10. ੍ޚߏ଄Λ࢖͏(3) $ seq 100 | while read n; do echo

    '羊が'$n'匹'; done 1͔Β100ͷ਺ྻΛ४උ ܁Γฦ͠ॲཧͷwhileϧʔϓʹύΠϓ઀ଓ
  11. ੍ޚߏ଄Λ࢖͏(3) #!/bin/sh seq 100 |\ while read n do echo

    '羊が'$n'匹' done ϫϯϥΠφͰ͸ݟʹ͍͘ͷͰ γΣϧεΫϦϓτͰهࡌ
  12. xargsΛ࢖͏(1) $ seq 100 | xargs printf '羊が%d匹\n' 1͔Β100ͷ਺ྻΛ४උ xargsʹύΠϓ઀ଓͯ͠printfίϚϯυ΁

    printf '羊が%d匹' 1 2 3 4 .. 99 100 ࣮࣭͸ԼهͷίϚϯυ͕࣮ߦ ܁Γฦ࣮͠ߦ͕ແ͍ͨΊߴ଎ॲཧ͕ظ଴
  13. xargsΛ࢖͏(2) $ seq 100 | xargs -I@ echo '羊が@匹' 1͔Β100ͷ਺ྻΛ४උ

    xargsͷ-IΦϓγϣϯΛར༻ echo '羊が1匹' echo '羊が2匹' .. echo '羊が100匹' ࣮࣭͸ӈهͷίϚϯυ͕ ࣮ߦ͞Ε͍ͯΔ
  14. γΣϧʹίϚϯυྻΛ $ seq -f 'echo 羊が%g匹' 100 | sh ԼهͷΑ͏ͳίϚϯυྻΛ࡞੒

    γΣϧʹύΠϓͰ౉࣮ͯ͠ߦ echo 羊が1匹 echo 羊が2匹 .. echo 羊が99匹 echo 羊が100匹 ύΠϓ γΣϧ
  15. ϑΟϧλίϚϯυͰ $ seq 100 | sed 's/^/羊が/' | sed 's/$/匹/'

    1͔Β100ͷ਺ྻΛ४උ ύΠϓͰsedʹ౉ͯ͠ॲཧ sed͕ϑΟϧλͱͯ͠ಈ࡞ ίϚϯυͷ܁Γฦ࣮͠ߦ͕ແ͍ͨΊ ߴ଎ͳॲཧ͕ظ଴ग़དྷΔ
  16. ܁Γฦ͠ॲཧͷߟ͑ํ • ॲཧ͍ͨ͠σʔλϦετΛ४උ • 1ߦ1ϨίʔυͳςΩετσʔλ • σʔλϑΝΠϧ໊Ұཡ • ίϚϯυͷग़ྗ

  17. ܁Γฦ͠ॲཧͷߟ͑ํ • ॲཧ͢ΔίϚϯυͷσβΠϯ • ϑΟϧλͱͯ͠ಈ࡞͢Δ͔ʁ • GNU date͸ΦϓγϣϯͰϑΟϧλಈ࡞ • ෳ਺ͷҾ਺͕ࢦఆग़དྷΔ͔ʁ

    • lsίϚϯυɺfileίϚϯυͳͲ
  18. ܁Γฦ͠ॲཧͷߟ͑ํ • ϑΟϧλͱͯ͠ಈ࡞͢Δ • ͜Ε͕ग़དྷΕ͹ཧ૝త • ύΠϓͰߴ଎ॲཧͷՄೳੑ

  19. ܁Γฦ͠ॲཧͷߟ͑ํ • ෳ਺ͷҾ਺͕ࢦఆग़དྷΔ • xargsͷར༻Λݕ౼͢Δ • xargs͸Ҿ਺͕௕͗ͯ͢΋େৎ෉

  20. ܁Γฦ͠ॲཧͷߟ͑ํ • ϑΟϧλ΋ෳ਺Ҿ਺΋μϝ • ੍ޚߏ଄Λߟ͑Δ • xargsͷ-n΍-IΦϓγϣϯͷར༻Λߟ͑Δ