Zshシェルルクリプティング¶
シェルスクリプトファイルの構成¶
シェバン¶
先頭行は、シェバンを記述します。zshのパスは環境依存なので、envを使って環境非依存な定義を記述するのが良いです。
#!/usr/bin/env zsh
コマンドライン引数¶
一般的にコマンドライン引数の指定方法には、次があります。
- 引数の位置で意味を持つポジショナル引数
例:コマンド <1番目の引数> <2番目の引数> ... - 引数の位置によらず、名前で意味を指定するオプショナル引数
例:コマンド -a --bravo -c num --delta del ...- オプショナル名は通常ハイフンを付けます。習慣として、オプショナル名は、1文字の省略指定と2文字以上のフル指定の組み合わせを用意し、1文字の省略指定はハイフンを1つ、2文字以上のフル指定はハイフンを2つ使用します。
例)ヘルプ(help)は、省略指定の-h
とフル指定の--help
を持つ - オプショナル引数は、オプショナルの指定のみのものと、オプショナル指定にパラメータを伴う指定があります。
例)-h
、-c count
- パラメータの指定には、
-c count
と空白で続ける場合と、-c=count
と=で連続する場合とが指定可能です。
- パラメータの指定には、
- オプショナル名は通常ハイフンを付けます。習慣として、オプショナル名は、1文字の省略指定と2文字以上のフル指定の組み合わせを用意し、1文字の省略指定はハイフンを1つ、2文字以上のフル指定はハイフンを2つ使用します。
- ポジショナル引数とオプショナル引数の混在もありますが、複雑なので本記事では省略します。
zshでは、オプショナル引数を解析して取得するzparseoptsが提供されています。
ポジショナル引数のみ¶
$1, $2, ... で1番目の引数、2番目の引数が取得できます。引数の総数は$#で取得できます。
command tom yum
first=$1
second=$2
オプション引数のみ¶
コマンドライン引数を処理する zparseopts を使うと、コマンドライン引数を解析して所定の変数に格納してくれます。色々な指定方法がありますが、ここではオプション引数の定義でオプション値を格納する変数を指定する定義を記します。
command -a -c=100 --bravo brabra
zparseopts a -bravo:opt_bravo c:opt_count
echo $opt_bravo
echo $opt_count
連想配列でオプションを取り込む方法¶
zparseopts -A opts a -bravo: c:
echo $opts[-a]
echo $opts[--bravo]
echo $opts[-c]
スクリプトの書き方¶
ディレクトリ、ファイルの操作¶
存在確認¶
ファイルの存在を確認¶
if [[ -f $ALFA_PATH ]]; then
echo $ALFA_PATH exists
fi
ディレクトリの存在を確認¶
if [[ -d $BRAVO_PATH ]]; then
echo $BRAVO_PATH exists
fi