シェルスクリプト構文 - 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}

echo ${RPM2}
echo ${RPM3}

・####  パターン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 ‘処理内容’ <対象ファイル>

・文字列置き換え

⚠️ **GitHub.com Fallback** ⚠️