仕事でちょっと楽するために書いたんですけど、事前知識が全くないせいでヒドい目に・・。
ちょっとずつでもできるようになるべく、覚えたことのメモ!
引数の扱い
コマンドに渡した引数は、
$1 # 1つ目の引数 $2 # 2つ目の引数 # $n nつ目の奇数
というように $n で取得できる。
変数の扱い
hoge=1 echo ${hoge}
- いきなり宣言できる
- aliasとかと一緒で=の左右は開けちゃダメ
- 参照するときは${…}のようにする
ファイルパス関連
fullpath=/~/git/hoge/index.html # フルパスからパス、ファイル名、拡張子を取得 path=${fullpath%/*} # ~/git/hoge name=${fullpath##*/} # index.html ext=${fullpath##*.} # html
これは便利だわ・・・。
終了ステータス
普段何気なく実行してるコマンドには終了ステータスというものがあって、
- 成功なら0
- そうでなければ0以外
を返すようになってるそうな。
mkdir hoge && cd hoge mkdir foo && mkdir poo && cd boo # ↑ boo/ なんてものはないので、 foo/ poo/ だけ作成して終了
みたいに出来るのは、このステータスでもって実行するかの判断をしている、と。
# … # … exit 0
スクリプトの最後はコレで終わるように。
IF文
ext="css" if [ "${ext}" = "css" ]; then echo "Css!" elif [ "${ext}" = "js" ]; then echo "JavaScript!" else echo "What is this?!" fi
- "[" の前後にスペースあけないとダメ
- ";" が変な位置にあるって思っちゃうけどあってる
- else ifじゃなくてelif
- シングルクォートではなくダブルクオートのほうが無難ぽい
ファイルを引数にとってループ
justShow.sh hoge fuga piyo
みたいに引数を順に処理したい場合
# $@ で引数が全部取れる for arg in $@ do echo ${arg} done
うーん、JavaScriptしか知らないと中々文法にも慣れないですね・・。
ここらはもっとちゃんと時間とって勉強しようと思ってます。