シェルスクリプト (#!/bin/sh) の基本
2 年ぶりにシェルスクリプトを書いたので基本的なことを忘れているのでメモっておきます。自分の書き方ですが、前はもっとスマートに書いていたかもしれません。とりあえず動く書き方ということで:
if 文
if [ $var -ge 10 ]# if のあとの [ ] ブロックの前にはスペースを入れる then# if, elif の後は改行後に then を入れる. #でも, 確かここまでワンライナーで書けたはずだが… # あと, [ ] (ブラケット) 括弧はいらない書き方もあったはず (elif [ $var -lt 5 ] then) (else) fi
for 文
実は今回初めて for 文を使いました. 普段は while を使って (たとえば) i = 0, 1, 2, … n の作業をするので
for idx in `seq 0 15`# ここ, [ ] で囲ってもいいような気がするんだけど… do# 改行して do を忘れない…ここも for からワンライナーでいけるはず # idx を変化させる範囲の書き方が `seq ini fin` とか思いもしなかった done
変数の定義
programdir="/usr/local/bin/" # = (イコール) の前後はスペースを空けない. #シングルクオートでも OK かも program=$programdir"grads" # 既存変数の代入時には $ を使う. 場面によっては { } (ブレース) 括弧 # が必要とした気がするけど詳細は忘れた. 既存変数以外の文字列部分は # 上のようにダブルクオートで囲っておけばたぶん大丈夫 $program #これで, プログラム /usr/local/bin/grads を実行
一行で書く
さっきからワンライナー, ワンライナー言ってましたが, 改行箇所をセミコロン (;-;) で置き換えれば OK ですね‥‥‥違う, (;).