シェルスクリプト構文 - mitsuaki0717/shino-repo GitHub Wiki
●書式
【変数】
【配列】
配列の基本構文は以下の4パターン
パターン1~3の出力結果は同じになる
パターン4については配列に入力する値がNULLの場合は詰めて格納される。
・#### パターン1 ####
RPM0=test0
RPM1=test1
RPM2=test2
RPM3=test3
echo $RPM0
echo $RPM1
echo $RPM2
echo $RPM3
・#### パターン2 ####
RPM0=test0
RPM1=test1
RPM2=test2
RPM3=test3
echo ${RPM0}
echo ${RPM1}
・#### パターン3 ####
RPM=(0=test0 1=test1 2=test2 3=test3)
echo ${RPM0}
echo ${RPM1}
echo ${RPM2}
echo ${RPM3}
・#### パターン4 ####
RPM=(test0 test1 test2 test3)
echo ${RPM0}
echo ${RPM1}
echo ${RPM2}
echo ${RPM3}
【for】
・基本構文
for 変数 in 値リスト
do
処理内容
done
・#### パターン1 ###
1から10までの合計を計算する
total=0
for x in `seq 1 10`
do
total=`expr $total + $x`
done
echo $total
= 結果 =
55
・#### パターン2 ###
a=“aaa”
b=“bbb ccc”
c=“ddd eee fff”
for x in “$a” “$b” “$c”
do
echo $x
done
= 結果 =
aaa
bbb ccc
ddd eee fff
・#### パターン3 ###
a=“aaa”
b=“bbb ccc”
c=“ddd eee fff”
for x in $a $b $c
do
echo $x
done
= 結果 =
aaa
bbb
ccc
ddd
eee
fff
【while】
※条件に一致するまで処理を繰り返す
・#### パターン1 ####
while [条件式] do
処理内容
done
・#### パターン2 ####
無限ループ
while :
do
処理内容
done
【until】
※条件に一致しない場合は繰り返す
until [条件式]
do
処理内容
done
【select】
※break等を使用して抜けない限りは無限ループになる
Ctrl+Cで抜けてもよい
PS3=“ここに書かれた内容が, 実行時に表示されます.”
select 変数 in アイテム1 アイテム2 アイテム3
do
処理内容
done
【if】
・#### パターン1 ####
if [条件式]; then
真の場合の処理
fi
・#### パターン2 ####
if [条件式]; then
真の場合の処理
else
偽の場合の処理
fi
・#### パターン3 ####
if [条件式1]; then
真の場合の処理
elif [条件式2]; then
真の場合の処理
else
偽の場合の処理
fi
【case】
・基本構文
case 変数 in
“パターン1” ) 処理1 ;;
“パターン2” ) 処理2 ;;
“パターン3” ) 処理3 ;;
* ) 処理4 ;; #上記のいずれでもない場合
esac
・マッチングパターンの書式
ワイルドカード
ABCで始まる
ABC*
先頭文字がA~Zで始まる
[A-Z]*
OR条件AまたはB
"A" | “B”
【break】
【continue】
次の繰り返しに移る
【条件式の書き方】
・数値の条件式
A -lt B AがB未満なら真
a -le B aがB以下なら真
A -gt B AがBより大きければ真
A -ge B AがB以上なら真
A -eq B AとBが等しければ真
A -ne B AとBが異なれば真
・文字列の条件式
文字列 = 文字列 等しければ真
文字列 != 文字列 異なれば真
文字列 NULLでなければ真
-n 文字列 NULLでなければ真
-z 文字列 NULLなら真
・条件式の複合
A -a B Aが真、かつBが真なら真
A -o B AもしくはBが真なら真
!A Aでなければ真
( ) 優先条件指定
=======
【演算】
a=`expr 10 + 3` #10+3=13
b=`expr 10 – 3` #10-3=7
c=`expr 10 \* 3` #10\*3=30
d=`expr 10 / 3` #10/3=3
e=`expr 10 % 3` #10%3=1
●シェルスクリプト内で使用するコマンド
【awk】
https://hydrocul.github.io/wiki/commands/awk.html
・基本構文
awk ‘{print $6}’
【expect】
対話型のやり取りを自動的に行う
・基本構文
expect -c "
spawn <実行したいコマンド>
expect \“検索文字列\”
send \“\”
"
if {[ expect \“正常終了しました\” ] <0} {
send \"print “OK”\r\" ;# yesと入力する。
}
【sed】
指定のファイルの内容を変更する
・基本構文
sed ‘処理内容’ <対象ファイル>
・文字列置き換え