シェルスクリプト個人メモ
- 変数を代入するとき
var = hello
などのようにイコールの前後に空白があるとエラーとなる - readonlyをつけると変更できない変数にすることができる
- $1は第一、$2は第二引数
- $#は引数の個数
- $@は全ての引数
- $0はスクリプトの名前
read var
でユーザーの入力を変数varに代入できるread -p "Name: " name
でユーザーからの入力を受け取るときターミナルに文字を表示することができるarray=(a b c)
で配列を作ることができるarray[i]=value
で配列のi番目に代入できる${array[i]}
で配列のi番目の要素を取得ができる${array[@]}
で配列の全ての要素を取得できる${#array[@]}
で配列の要素数を取得できるarray+=(d e)
で配列に要素を追加できる- 二重中括弧で計算できる(例:
echo ((1+1)) // 2
、((n=n+22))
)、二重中カッコ内の空白はあってもなくてもいい - if test then fiもしくは if then fiでif文を作れる
- if [ $var = a ]のの前後の空白は必要、=の前後の空白は片方のみ空白だとエラーとなる?(基本は=の前後に空白を入れればok)
- elif [ $var = b ]; then でさらなる条件文を作れる
- 文字列の比較は二重大括弧を使う、
[[ $var = "a b" ]]
みたく$varには""をつけなくてもok [[ $var =~ ^t ]]
で正規表現、[[ -z $var ]]
で$varが空かどうか- 数値を比較する場合は二重括弧を使う、
if ((n== 2 )); then
みたく空白はあってもなくてもok
for文
for i in a b c; do echo $i done for i in {a..c}; do echo $i done array=(a b c) for i in ${array[@]}; do echo $i done for ((i=1; i<4; i++)); do echo $i done