タグ

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

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

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

  • コマンド実行でシェルが怖いなら使わなければいいじゃない - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    http://blog.ohgaki.net/os-command-escape-shell-spec-command-implementation 「えすけーぷじゅうよう!!」を強調して言いたいからなのかシェルの理解が足りないからなのか、 意図がよくわからない文言やら説明が散見されますが、きりがないのでそれらはスルーします。 (シェルについては、なんで関係ない tcsh の話が出てくるんだとか、 位置パラメーター展開に $* 使うなとか、色々) 特に気になったのが以下の文章です。(強調は私によるもの) OSコマンドはOSが提供するシェルで実行されます。 シェルはテキストインターフェースを持ち、 テキストでコマンドとオプションを受け取り実行します。 例示した脆弱なPHPプログラムの場合、 ユーザーからの入力に対しセキュリティ処理を一切してないため、 簡単にサーバーを乗っ取られる可能性があり

  • RPM SPEC scriptlet - ダメ出し Blog

    scriptlet の種類 インストール/アンインストール scriptlet %pre %post %preun %postun 引数 FIXME トリガー scriptlet トリガー対象のパッケージにバージョン-リリースも指定できるが、 エポックは指定しても無視される。なんでだよ、クソが。 %triggerin %triggerun %triggerpostun %triggerin は別名 %trigger でもよいらしい(要確認)。 %triggerpostin は存在しない。 引数 FIXME $1 Number of instances of the source (or triggered) package which will remain when the trigger has completed $2 Number of instances of the targe

  • 安全な一時ファイルの作成と削除の方法 - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    拡張 POSIX シェルスクリプト Advent Calendar 2013、6日目の記事です。 日のお題は「一時ファイルの作成と削除」ですが、 よくあるシェルスクリプトのダメ出しネタになってしまいました。 安全な一時ファイルの作成方法 たとえば、こんな感じのありがち(?)なスクリプトがあったとします。 意味のない処理内容ですが、雰囲気だけ察してください。 #!/bin/bash tmpfile=/tmp/words.tmp rm -f $tmpfile echo 'しにたい' >>$tmpfile echo 'とりあえずねよう' >>$tmpfile sleep 3 echo -n '今どんな気持ち? ' read feeling echo $feeling >>$tmpfile cat $tmpfile rm $tmpfile 全然駄目ですね。 もし「何にも問題ないじゃないか!」とい

  • 位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog

    位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog Shell Script Advent Calendar 2016 の 15日目の記事です。 位置パラメーター (Positional Parameters) の紹介と、 その値をすべて展開する $*, $@, "$*", "$@" の違いについて解説します。 $*, $@, "$*", "$@" の違いを認識し使い分けできるかどうかは、 シェルをちゃんと理解しているかどうかの指標の一つと言えるのではないかと思います。 残念ながら、適切な位置パラメーター展開を用いていないシェルスクリプトが珍しくありません。 あなたのシェルスクリプトは大丈夫ですか? あなたの好きな◯◯のソースコードや配布物に付属のシェルスクリプトも要チ

  • 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 - ダメ出し Blog 拡張 POSIX シェルスクリプト Advent Calendar 2013、10日目の記事です。 そろそろネタが尽きそうです。 スクリプトの添削依頼や疑問・質問、やって欲しいネタをお待ちしております。 記事に反映できるかどうかは内容や私の実力次第ですが…。 今日はコマンドパイプラインを実行したときの変数のスコープの問題について紹介します。 「あー、パイプラインとサブシェルの問題だね。知っているよ!」という方も、 最後までお付き合いいただけると新しい発見があるかもしれません。 まずシェルスクリプトのお題として 「メンバー情報が空でないグループの数とグループ名の一覧をカンマ区切りで表示するスクリプトの作成」 を考えてみます。 実装のポイントは次

    t2y-1979
    t2y-1979 2014/10/16
    気をつけてないとはまる
  • 連続する数列をハイフンでまとめるピュアシェルスクリプト - ダメ出し Blog

    http://blog.ueda.asia/?p=1663 awkで連続した数列を範囲形式に - jarp, http://jarp.does.notwork.org/diary/201311c.html#201311271 TL で見かけた回答ツイート https://twitter.com/RobustHunter/status/405552789876523008 https://twitter.com/uspmag/status/405730524733247488 https://twitter.com/masaru0714/status/405740108948598784 真の shellist たるもの、外部コマンドに頼ってはいけない(適当)。 というわけで、ピュアシェルスクリプトをどうぞ。 read i;s=${i%% *};let p=x=s-1;for n in $i

    t2y-1979
    t2y-1979 2014/06/14
    ピュアシェルスクリプトって初めて聞いた
  • 1