bash
ワロサは、「いとわろし」のワロサ=悪さと、ワロス=笑える/笑かしてくれるの両方の意味。bashは古い言語の悪しき特徴を満遍なく現代に受け継いでいる。 汚い変数構文 ブロックスコープがない。 それなのに、呼び出し階層による入れ子スコープ 動的なくせ…
不合理な構文: ${!…} は、「困ったらとりあえずビックリ」という方針な気がする。 トークンと式と文とデータ(リテラル)の区別が曖昧。 式の評価方式がハッキリしない。 式の値=データもハッキリしない。 データの実際の値をインスペクトするのが困難 状…
不確実で変な方法がいくつかあるが、確実と思えるのは次だけのようだ。 declare -p ass 2> /dev/nul 1> /dev/null; echo $? (&> dev/null が使える) declareがエラーを返すときは、その名前は未定義。それにしても、こんな方法しかないとすると、設計が間…
※関数と変数と別名は名前空間が別スコープ 局所変数 大域変数 環境変数 アクセス 書き込み可能 書き込み不可能(readonly, immutable) システムorユーザー 特殊パラメータ システム使用の変数(IFSなど) ユーザー変数 エクスポート エクスポート変数 内部…
引数型付け local オプション 名前=初期値 戻り情報:ステータス(終了コード $?)、標準出力(ハンドル1番)、エラー出力(ハンドル2番)、出力引数(参照)、結果大域変数 可変引数、残余引数 in TypeScript (...rest: string[]) 引数デフォルト値 in Type…
もう、酷いとしか言いようが無い。 たぶん、declare宣言でしか連想配列を指定できない。リテラル風の記法はない(たぶん)。 配列と連想配列で、a[i] と a[i] の解釈が異なる。 配列と連想配列で、a[1] と a[1] が${}内で使えるが、内部的解釈はたぶん異なる…
何故か -g オプションが文書化されてない。new featureなのか? 確かに3.xにはなくて、4.3にはある。 -g グローバル宣言 (4.x)、-gなしで関数内で使うとlocalと同じになる。 -x exportと同じになる。 -r readonlyと同じになる。 -a 配列 -A 連想配列 (4.x) …
help, type, command, builtin, function, local, declare とか。 $ help help help: help [-s] [pattern ...] Display helpful information about builtin commands. If PATTERN is specified, gives detailed help on all commands matching PATTERN, othe…
シェル変数への代入は、=の両側空白なし。FOO=bar 、FOO='bar baz' とか。 $$はシェルのPID、一時ファイル名によく使う。Makefile上では$$$$ install -d は便利 でも、installよりcpのほうが便利なときが多い。 cp -R my/dir your/ と cp -R my/dir/* your/d…