このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

bash

bashの素晴らしきワロサ

ワロサは、「いとわろし」のワロサ=悪さと、ワロス=笑える/笑かしてくれるの両方の意味。bashは古い言語の悪しき特徴を満遍なく現代に受け継いでいる。 汚い変数構文 ブロックスコープがない。 それなのに、呼び出し階層による入れ子スコープ 動的なくせ…

bashの何が最悪なのか

不合理な構文: ${!…} は、「困ったらとりあえずビックリ」という方針な気がする。 トークンと式と文とデータ(リテラル)の区別が曖昧。 式の評価方式がハッキリしない。 式の値=データもハッキリしない。 データの実際の値をインスペクトするのが困難 状…

bashの配列と連想配列の存在確認

不確実で変な方法がいくつかあるが、確実と思えるのは次だけのようだ。 declare -p ass 2> /dev/nul 1> /dev/null; echo $? (&> dev/null が使える) declareがエラーを返すときは、その名前は未定義。それにしても、こんな方法しかないとすると、設計が間…

bashの変数

※関数と変数と別名は名前空間が別スコープ 局所変数 大域変数 環境変数 アクセス 書き込み可能 書き込み不可能(readonly, immutable) システムorユーザー 特殊パラメータ システム使用の変数(IFSなど) ユーザー変数 エクスポート エクスポート変数 内部…

bashの関数

引数型付け local オプション 名前=初期値 戻り情報:ステータス(終了コード $?)、標準出力(ハンドル1番)、エラー出力(ハンドル2番)、出力引数(参照)、結果大域変数 可変引数、残余引数 in TypeScript (...rest: string[]) 引数デフォルト値 in Type…

bashの配列と連想配列

もう、酷いとしか言いようが無い。 たぶん、declare宣言でしか連想配列を指定できない。リテラル風の記法はない(たぶん)。 配列と連想配列で、a[i] と a[i] の解釈が異なる。 配列と連想配列で、a[1] と a[1] が${}内で使えるが、内部的解釈はたぶん異なる…

bashのdeclareとか何やら

何故か -g オプションが文書化されてない。new featureなのか? 確かに3.xにはなくて、4.3にはある。 -g グローバル宣言 (4.x)、-gなしで関数内で使うとlocalと同じになる。 -x exportと同じになる。 -r readonlyと同じになる。 -a 配列 -A 連想配列 (4.x) …

bashのヘルプ

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…