1.スクリプトを記述します。要件は次のとおりです。
スクリプトを作成するときは、スクリプトの最初に関数定義を配置してみてください。スクリプトの最後に関数定義を配置することはできません。そうしないと、関数が読み取られません。
2.ステートメントの場合:
结构:
for 定义变量
do 使用变量,执行动作
done 结束标志
格式1:
#!/bin/bash
for WESTOS in `seq 2 2 10` #开始为2,结束为10(包含10),部长是2;即10以内的偶数
do
echo $WESTOS
done
格式2:
for WESTOS in 1 2 3(westos linux lin)
do
echo $WESTOS
done
格式3:
for WESTOS in {
10..1} (从10到1)
do
echo $WESTOS
done
格式4:
for ((WESTOS=0;WESTOS<10;WESTOS++))
do
echo $WESTOS
done
補足:seqコマンド:特定の数値から別の数値へのすべての整数を生成するために使用されます
構文:
seq [options] ... mantissa
seq [options] ...最初の番号とmantissaseq
[options] ...最初の番号の増分mantissa
パラメータ:
-f、-format = formatはprintfスタイルの浮動小数点形式を使用します
-s、-separator = stringは指定された文字列を使用して数値を区切ります(デフォルトの使用:\ n)
-w、-equal-width列の前幅を同じにするには0を追加します
スクリプトの記述:
check_host.sh
このスクリプトを使用して、現在のホストに直接接続されている10個のホストに正常なネットワークがあるかどうかを検出します。
ネットワークが正常な場合は、ホストのIPリストを表示してください。
スクリプトの記述:
create_user_file.shファイルusernamefileを追加ファイルuserpasswd
を追加し、ユーザーが存在する場合はプロンプトを表示し、存在しない場合は作成します。
3.whileステートメントとuntilステートメント:
while :
while ture #条件为真
do #条件成立所作循环动作
done
until :
until false ##条件为假
do
#条件不成立所作循环动作
done
whileステートメントとuntilステートメントの実行ブロック(do)には、変数を制御するための条件が必要です。そうでない場合、無限にループします。while
ステートメントは99の乗算テーブルを出力します。
untilステートメントは99乗算テーブルを出力します。
4. Ifステートメント:
if
then
elif
then
...
else
fi
スクリプトの演習:
check_file.sh
ファイルを入力してください:ファイル
ファイルは存在しません
ファイルは
ディレクトリです
このスクリプトは、ユーザーが終了に入るまで質問を続けます
ifステートメントは、条件を満たすステートメントが判断されるまで(判断メカニズム、yesおよびno)、上から下に複数回判断を実行します。case
ステートメントは1回だけ判断されます(呼び出しメカニズム)。
5.caseステートメント:
case $1 in
word1|WORD1)
action1
;;
word2|WORD2)
action2
;;
*)
action3
esac
スクリプトの演習:
system_watch.shディスクメモリのアップロード(毎秒表示)
ディスクモニターディスク使用量
メモリモニターメモリ使用量
アップロードモニター起動負荷
6.expectステートメント:
问题脚本
#!/bin/bash
read -p "what's your name:" NAME
read -p "How old are you: " AGE
read -p "Which objective: " OBJ
read -p "Are you ok? " OK
echo $NAME is $AGE\'s old study $OBJ feel $OK
应答脚本
#!/usr/bin/expect
set timeout 1 ##脚本问答等待时间
set NAME [ lindex $argv 0 ] ##第一个字符
set AGE [ lindex $argv 1 ]
set OBJ [ lindex $argv 2 ]
set FEEL [ lindex $argv 3 ]
spawn /mnt/ask.sh
expect {
"name" {
send "$NAME\r";exp_continue }
"old" {
send "$AGE\r";exp_continue }
"objective" {
send "$OBJ\r";exp_continue }
"ok" {
send "$FEEL\r" }
}
expect eof
将应答脚本写入shell:
#!/bin/bash
echo hello westos
/usr/bin/expect <<EOF
spawn /mnt/ask.sh
expect {
"name" {
send "$1\r";exp_continue }
"old" {
send "$2\r";exp_continue }
"objective" {
send "$3\r";exp_continue }
"ok" {
send "$4\r" }
}
expext eof
スクリプト演習:
host_list.shの
。172.25.254.1-172.25.254.10ネットワークが開いているかどうかを検出
:それが開いている場合は、生成された解像度のリストは以下のようにされた
IPホスト名
など:172.25.254.1 westos_Student1.westos.org 7.break
、継続、終了コントローラ:
「$を? "終了値、正しい結果出力、または終了後の終了値が0であることを示します。
continue ##终止当此次前循环提前进入下个循环
break ##终止当前所在语句所有动作进行语句外的其他动作
exit ##脚本退出