はてなキーワード: シェルスクリプトとは
あんさん、Dockerとか言ってるしあんまりシェルスクリプトの凄まじい現場とか見たこと無いのでは。
シェルってのは人間の向けのコマンドの出力結果をawkとかsedで分解して後続につなげるもんなんで出力結果が変わると困る。ただ、manにはこういう処理で使えるほどの詳細な挙動は書いてないことが多い。
そして、シェルは出力結果おかしくても型とかじゃなくて文字列処理だから割りと後続処理が実行できちゃう。おかしい箇所を発見するのも時間がかかる。
そういうことが無いようにバリデーションのコードとか書き始めると複雑で何百行にもなるシェルスクリプトができて、これが一層壊れやすいし保守開発がめんどいことになる。
横からだがシェルスクリプトで使用してるコマンドとオプションの仕様を把握するのなんて高級言語で使用するAPIの仕様を把握するのと同じぐらい基本的で当たり前のことだよ。manっていうコマンドを使ったり、より簡易的には--helpのようなオプションで確認できるよ。
君が論理的じゃないとしているところは筋が通っていると思うよ。
検証というのはプログラム開発におけるテスト工程だけでなく無数の利用者が継続的に使い続けていることを指しているよ。それを含めるならPOSIX準拠のシェルコマンドよりもよく検証されているプログラムなんて世の中に存在しないんじゃないかと思うよ
標準ライブラリのすべての関数のありとあらゆる引数に対する挙動を把握している?
標準コマンドは標準入出力を通してプログラム同士で連携することを想定して作成されており、
入出力の破壊的変更を気軽にコミットしようとしたら秒でハネられます
「ゾウリムシよりも蟻は大きい」を「蟻は大きい」で切って引用するのはやめましょう
規模が大きくなると信頼できない、その場しのぎ的な技術であるのはpythonなどのスクリプトの実行環境も同様です
すべての処理、すべてのプログラムをRustで書くような行為はきわめて非生産的ですし、シェルスクリプト以上に危険です
「よく検証されている」というのはされているかいないかというバイナリーな概念ではなく程度問題なので、UNIXの標準コマンドと高級言語の標準ライブラリなら標準コマンドの方が"遥かに"よく検証されているし
論理的じゃないよね
メンテナの数、レビューする人数、実際に動作している環境etc
横からだがシェルスクリプトで使用してるコマンドの仕様を把握するのなんて高級言語で使用するAPIの仕様を把握するのと同じぐらい基本的で当たり前のことだよ。manっていうコマンドを使ったり、より簡易的には--helpのようなオプションで確認できるよ。
例えば、ファイルをあっちからこっちにコピーして一時的に待避するだけならシェルスクリプトでcpコマンド書くのがコスト最小でしょ。現実のシステム運用では費用対効果を考えていろんな仕組みを使い分けてるんだよ
シェルスクリプトに使用したコマンドのすべての挙動を把握している?
使用予定のオプションだけでも出力結果のすべてのパターンを把握している?
人が手て使うことを想定された曖昧さの残るコマンドと、高級言語の機械が使うことが前提の曖昧さの少ない機能だと全然違うものだと思うが
そんな事無いよね。Linuxサーバの保守とかでパッチノートとか読んだこと無い?
インストールし終わったらほとんどアップデートしてない凄まじい運用してるんならあれだけど
「よく検証されている」というのはされているかいないかというバイナリーな概念ではなく程度問題なので、UNIXの標準コマンドと高級言語の標準ライブラリなら標準コマンドの方が"遥かに"よく検証されているし
論理的じゃないよね
横からだがシェルスクリプトやばい増田へ。これほど丁寧に解説して貰えるのはありがたいことなのでよく読んで理解しておきなよ
君の好きそうなところだとDockerのコンテナイメージのentrypointは基本的にシェルスクリプトが指定されてて、もちろんいろんな会社がプロダクション環境で動かしてるよ
世界中のITシステムを稼働させている企業は99.9%以上やばいということだな。そうすると公務員が次の選択肢になりそうだが役場から省庁から何とか法人まで探してもシェルスクリプトをプロダクションで使ってないところなんてないよな。小さな村の役場とかならワンチャンあるか。その素晴らしいITスキルを生かして紙とペンで革命を起こすんだ