シェルスクリプトの実践 - whileループ文
前置き
上記では、有限ループの中で便利なforループの使い方を説明しましたが、今日はwhileループについて調べてみましょう
whileループ文の構文解析
構文フォーマット I.
while [condition]
do
Operation
done
構文フォーマット II.
while read line
do
operation
done < file
readコマンドでファイルを1行ずつ読み、何行目か、whileループの回数
注:doとdoneの間の文は、式が真のときのみ実行され、式が偽のときはループが終了する(つまり、条件が成立していればループは実行され続ける)。
例
while true ;do
echo 'helloword'
done
whileの使用例
1. 1から10までの数字をループで表示する
#! /bin/bash
num=1
while [ $num -le 10 ]
do
echo $num
num=$(( $num + 1 ))
done
2. while を使ってファイルを読み、その内容を表示する。
使用法1
while read line
do
echo $line
done <. /a.txt
使用法2
cat . /a.txt|
while read line
do
echo $line
done
forの実装では、ファイルを読み込んで、その行に表示します。
#! /bin/bash
content=$(cat . /a.txt)
for i in $content
do
echo $i
done
3.2つの数字を掛け合わせた効果を出力する(下図参照)
ここで提案してくれた@A Little Whiteに感謝します。多くの人は等号を見ると2つの等しい辺を思い浮かべますが、これは私たちの教育的習慣に沿ったものです。
画像のような効果を得るには、次のようにすればよいでしょう。
#! /bin/bash
num=1
while [ $num -lt 10 ]
do
sum=$(( $num * $num))
echo "$num * $num = $num"
((num++))
done
もちろん、ほとんどの人は、方程式の両辺は等しくなければならない、等しくないと格好が悪いという考え方に慣れている。これは義務教育の結果であり、少し変えると
#! /bin/bash
num=1
while [ $num -lt 10 ]
do
sum=$(( $num * $num))
echo "$num * $num = $sum"
((num++))
done
この出力は、ほとんどの人の数学的習慣と一致する。
指定されたファイルにユーザーを作成する
zhangsan lisi wangwuを含むファイル名.txtを指定する。
name.txtはこのような感じです。
[root@ecs-c13b ~]# cat name.txt
zhangsan
lisi
wangwu
name.txtからユーザー名を繰り返し入力し、ユーザーを作成します。
#! /bin/bash
for name in `cat /root/name.txt`
#for name in $(cat /root/a.txt)
do
id $name &> /dev/null
if [ $? -ne 0 ];then
useradd $name
echo "123456" |passwd --stdin $name &> /dev/null
echo "user $name created"
else
echo "user $name is exist"
fi
done
概要
これまで、for-while-if-caseの4つの一般的な制御文について検討してきましたが、そろそろ練習して合成してみましょう。
シェルスクリプト-whileループについての記事は以上です。シェル - whileループの詳細については、Scripting Houseの過去記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
シェルでCPUを占有するスクリプトをlinuxで書く方法
-
シェルスクリプトの基礎と原理入門
-
シェルスクリプトでバッチファイルを簡単に作成・変更する方法
-
Bashsupportプラグインでシェルスクリプトを編集するアイデア集
-
[解決済み】Bash スクリプトと /bin/bash^M: bad interpreter: そのようなファイルまたはディレクトリがない [重複] [重複
-
シェルスクリプトで jdk を自動インストールする例
-
シェル文字列インターセプトエラー。不正な置換ソリューション
-
シェルテキスト処理三銃士におけるsedの使用について
-
ローカル yum ソース設定用ワンクリック・シェル・スクリプト
-
シェル変数の説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン