shellscript

A collection of 4 posts
Interpret argument with bash
bash

Interpret argument with bash

bashシェルスクリプトで引数を解釈し処理するスクリプトを書きたい時に必要になるコマンドや特殊変数、関数をまとめました。例もあるよ。 ※ $@について追記しました!感謝! https://twitter.com/masutaka/status/796703261185216512 $* 順番に見てく。まず$*。 すべての引数が設定される特殊変数。 こんなスクリプトがあったとして…。 #!/bin/sh echo $* こうなる。 $ ./argument.sh a bb ccc a bb ccc $@ すべての引数が設定される特殊変数。え!?@*と同じじゃん! 違いは、「$@はスペース区切りで設定される」のに対し、「@*は環境変数IFS区切りで設定される」こと!知らなかった...。 IFSが空の場合は上にもあるようにスペース区切り。 $ ./argument.sh a bb ccc a bb ccc 環境変数IFSを設定すると...。 #!/bin/sh IFS='区切りだよ'
4 min read
Update Ghost 0.11.1 to 0.11.2 with shell script
shellscript

Update Ghost 0.11.1 to 0.11.2 with shell script

ghostのアップデートが出ました。 * Ghost 0.11.2 メモリリークに関する修正があったみたいですね。メモリリークと言えば、最近ghostを0.11.1に上げたあたりからどうもmackerelからメモリ使用量のアラートがちょくちょく来るようになったので(元々メモリカツカツですが)解消することが期待できそうです。 アップデートは手作業でやりたくないので、シェルスクリプトで行っています。どのディレクトリを入れ替えればいいかなどは公式のドキュメントにアップデート手順があるのでそれを参考にしています。 * How to Upgrade Ghost マイナーアップデートはこのシェルスクリプトで充分そう。ghostのディレクトリやパーミッションなどがハードコーディングされていてあんまり汎用的ではないですが、自分用なのでとりあえず良いかなと思っています。 課題はthemeのアップデートで、GAやAlgoliaのためにthemeをいじっているので、まるごと入れ替えができないことです。これはなんとかしたいな〜と思っています。面倒なときはcoreのアップデートだけ
1 min read
Enjoy mackerel metadata
mackerel

Enjoy mackerel metadata

先日のmackerelミートアップでメタデータなる新機能が発表されました。 * メタデータ - Mackerel API ドキュメント (v0) 後日談として、この機能がどんな感じか試してみます。まずは一通りメタデータの入出力を試してから、メタデータと何かしらを連携させて遊んでみるところまでやってみます。 ホストメタデータの登録・更新 APIキーとホストIDは面倒なので環境変数に入れています。 環境の情報をメタデータで持たせてみます。 $ curl -X PUT -H "X-Api-Key: $MACKEREL_APIKEY" -H "Content-Type:application/json" -d "{\"environment\": \"production\"}" https://mackerel.io/api/v0/hosts/$MACKEREL_HOSTID/metadata/environment {"success":true} ホストメタデータの取得 うむ。 $ curl -s -X GET -H "X-Api-Key: $
2 min read
Use bash parameter
shell

Use bash parameter

bash parameterなるものを教えてもらったので試してみる 変数のデフォルト値を決められて、もし環境変数とかで指定されていればそれを使ってくれるらしい! $ man sh ... ${parameter:-word} Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted. ... 実験用にこんなスクリプトを用意 #!/bin/sh echo ${MY_PARAMETER:-'is default parameter'} 実行 $ ./param.sh is default parameter MY_PARAMETERに値をセットしてみる $ export MY_PARAMETER=
1 min read