シェルスクリプト繰り返し構文書き方

スポンサーリンク

はじめに

シェルスクリプトでの繰り返し構文
を紹介していきます。CやPHPなどと
わりと勝手違います。

主にfor文とwhile文について。CやPHP
などよりfor文向きの使い方とwhile文
向きの使い方がハッキリ出ている気が   します。

環境

Linux mintを使っています

for文

for文の基本構文

まず基本構文から

for 変数 in 値リスト
do
   処理
done

では実際に書いてみます

#!/bin/bash

for val in 0 1 2 4 5
do
   echo $val
done

f:id:shangtian:20190107095129p:plain

C言語PHP風に

やはりこういった書き方の方がしっくり
きますね。

#!/bin/bash

for ((i=0; i<5; i++))
do
   echo "$i回目"
done

f:id:shangtian:20190107100131p:plain

seqコマンドを使って

seqコマンドを使うのも便利です。
コマンドをfor文に書くとき
コマンドのように書きます

#!/bin/bash

for i in `seq 1 10`
do
   echo $i 
done

f:id:shangtian:20190107094458p:plain

forとコマンドを組み合わせて

すこし実践的に

シェルスクリプトファイルがある
ディレクトリ内のファイル名を読み取り
テキストファイルに書き込みます。

#!/bin/bash

for name in `ls`
do
#>>で追記モードでファイル出力
echo $name >> name.txt
done

f:id:shangtian:20190107100629p:plain

while文

基本構文

while コマンド
do
   処理
done

これが基本的な構文の形


テストコマンドを使って

readで標準入力の文字列を受け取って
okと一致するまで繰り返す

#!/bin/bash

read word

while [ "$word" != "ok" ]
do
   echo "not good"
   read word
done

echo "you're  good "

f:id:shangtian:20190107213610p:plain

ほかのコマンドでwhile文を使う

前準備としてseqコマンドを使ってテキストファイルを作成する

$seq 0 2 20 > number.txt

ファイルの中は

f:id:shangtian:20190107214208p:plain

つくったテキストファイルを読み込み一行ずつ出力

#!/bin/bash


while read line
do
   echo $line
done < number.txt

f:id:shangtian:20190107214433p:plain

CやPHP風に

これが一番すきかな

#!/bin/bash

i=0
while ((i<10)) 
do
   echo $i
   ((i++))
done

f:id:shangtian:20190107215112p:plain