シェルスクリプト個人メモ

  • 変数を代入するとき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