タグ

ブックマーク / fumiyas.github.io (4)

  • いろいろな *[!c]sh 実装のキライなところ - Shell Script Advent Calendar 2016 - ダメ出し Blog

    いろいろな *[!c]sh 実装のキライなところ - Shell Script Advent Calendar 2016 - ダメ出し Blog Shell Script Advent Calendar 2016 の 25日目の記事です。最終日ですね。クリスマスですね。私の誕生日ですね。 今年は子供達が一緒だからさみしくないもん。 Advent Calendar 最終日のネタとして相応しくないような気もしますが、 いろいろな *[!c]sh を使って経験した「えっ? ナニソレ? おかしくね?」 と感じた嫌いな仕様を紹介してみたいと思います。登場するシェルは bash, dash, ksh (AT&T ksh), mksh, zsh です。 移植性のよいシェルスクリプトを書くのにお役立てください。 bash の嫌いなところ set -u 時に空の配列変数展開すると強制終了 (〜 bash 4

    iww
    iww 2017/04/06
    『zsh の echo はデフォルトでエスケープシーケンスを解釈します。』 dashもそうだったような
  • sendmail コマンドによるメール発信 - Postfix Advent Calendar 2014 - ダメ出し Blog

    Postfix Advent Calendar 2014 の 13日目の記事です。 現在、12月17日です。毎度遅れてすみません。 Postfix の sendmail コマンドを MUA として用い、メールを発信する方法について紹介します。 Sendmail や qmail など、ほかの MTA 付属の sendmail でも概ね同じです。 シェル芸だけで正しくメールを発信できるようになると、色々と便利ですよ。 以下、コマンドラインなどの文字エンコーディングは UTF-8 と仮定します。 設定 Postfix の設定は通常通りで構いません。 メールを発信するだけの MTA を「null クライアント」などと称しますが、 発信のほかに用途がないのであれば、そのような設定をするのがいいと思います。 null クライアントの設定例は Postfix 付属の文書ファイル STANDARD_CON

  • ポータブルなシェルスクリプトを書く - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    拡張 POSIX シェルスクリプト Advent Calendar 2013、19日目の記事です。 うおー、あと 30分で書かないといけねー! 雑な内容ですみません。 今日はポータブルなシェルスクリプトの書き方ついてざっくり語ります。 UNIX 系 OS であれば大抵の OS / バージョンでも動くシェルスクリプト!! (ただし外部コマンドの非互換性の問題は除く) #!/bin/sh で書く POSIX sh でスクリプトを書けば完璧! shebang は #!/bin/sh!! …全然完璧ではありません。Solaris 10 のように /bin/sh が POSIX sh でない残念な OS がまだ生き残っています。 マニュアルにも載っているバグが仕様になったのではないかと思われる謎挙動や未知のバグを回避するのが大変です。 ポータブルにするには #!/bin/sh はまだ推奨できません。

    iww
    iww 2013/12/24
    checkbashisms
  • test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 拡張 POSIX シェルスクリプト Advent Calendar 2013、15日目の記事です。 書くのが遅れ、ネタは尽きかけ、 マニアックさやニッチさが足りなくなってきているような気がします。 ふつうの内容ですみません。 今日は test, [, [[ コマンドの違いについてざっくり紹介します。 [[ がある bash, ksh, zsh ならば test と [ の使用は避け、 [[ を使用すべきです。 [ は慎重に使わないと様々な罠にかかるため危険です。 (翌日のネタも併わせてどうぞ) test と [ の違い どちらもシェルの組込みコマンドです。名前が違うのと [ は最後の引数を ] にしなければいけない縛りがある以外、 動作まった

  • 1