Shell

direnvから.envをロードする

·1 分で読めます

.envrcファイルに dotenv と書くだけで、現在いるディレクトリの .env ファイルを読んでくれる素敵な仕様を発見した。これでdirenv使いながら.env形式しか受け付けないアプリケーションにも対応できてめでたしめでたし。 以下は具体的な例。

Shellで絶対パスを取得する

·1 分で読めます

よく忘れてしまうのでメモ。例えば実行するスクリプトの絶対パスを取得する場合。 !/bin/sh DIR=$(cd $(dirname "$0") && pwd) echo $DIR $ sh ~/Dropbox/code/sh/abspath.sh Users/kazuhiro/Dropbox/co

Shellでset -uした時の引数の取り扱い

·1 分で読めます

!/bin/sh DIR=$1 rm -rf $DIR/ なんてやると$1がなかった時に / が消されてしまうので非常に危険。こういう場合は set -u して、未定義の変数があればエラーにすることが推奨される。 /Users/kazuhiro/Dropbox/code/sh/set\_u.sh:

Shellでset -e の状態を解除するにはset +e

·1 分で読めます

"set -e": 実行コマンドが0以外の終了コードの場合、シェルスクリプトを終了する - RX-7乗りの適当な日々(http://d.hatena.ne.jp/rx7/20101226/p1)にある通り、Shellスクリプトで set -e すると実行結果が0以外の場合、勝手にスクリプトが終了する

Shellでgetoptsを使ってコマンドライン引数の解析

·2 分で読めます

だいぶ前の話、Perlを使わないでShellスクリプトで頑張っていた頃、Shellでコマンドラインオプションの解析をやる時は !/bin/sh for OPT in $\ do case $OPT in '-x' ) FLAG\_X="TRUE" ;; '-y' ) shift FLAG\_Y="T

Shellで配列のマージ

·1 分で読めます

Shellスクリプトで配列のマージってどうやるんだろうって思ったので調べてみたら、${ARRAY\\\} か ${ARRAY\@\} で配列の要素を全部取得できるらしいので、それを () 使ってマージすればいいらしい。 !/bin/sh ARRAY1=(1.1.1.1 2.2.2.2) ARRAY2