タグ

posixとshに関するakaneharaのブックマーク (4)

  • シェルの展開順序に気をつけよう - Qiita

    Shell Script Advent Calendar 2016の12月17日エントリーです(途中途切れてるので日数計算は不明)。 初級者向けの基礎知識として、シェルの展開順序について書きます。ここではbashを例に説明しますが、基は各種シェルに共通していると思います。 展開と実行の順序 端末やシェルスクリプトなどでシェルを使うときには、展開順序を意識していないと思わぬ失敗をすることがあります。展開(expansion)とは、ファイル名のパターン(ワイルドカード)やシェル変数などの処理です。 展開のメカニズムは普通のプログラミング言語のモデルと大きく異なる点の一つです。たとえば、多くのプログラミング言語の文法では変数は値の一種として扱われますが、シェルの文法では変数が展開されてから実際の処理が実行されます。このあたりの感覚は、C言語のプリプロセッサマクロなどに近いかもしれません。 ba

    シェルの展開順序に気をつけよう - Qiita
  • シェルスクリプト——こんなとき、かうする - Qiita

    POSIX シェルの小ネタ集。随時更新。 POSIX の範囲外の機能に依存するところには 【non-POSIX】 と書いておいた。 ファイル操作 空のファイルを作る touch でもいいがリダイレクトした方が速い。 >> filename # 既存ファイルは上書きしない (ファイルの更新日時も変へない) >| filename # 既存ファイルは空にする > filename # -C が有効なら既存ファイルがあるとエラーになる フィルタ ソートして重複行を消す sort | uniq でもいいが sort -u だと一コマンドで済む。 ソートせずに重複行を消す awk '!x[$0]++' 1 行番号を付加する awk '{print ++i,$0}' 【non-POSIX】 cat -n 一行目だけを消す tail -n +2 sed 1d 最後の行だけを消す head -n -1 s

    シェルスクリプト——こんなとき、かうする - Qiita
  • シェルスクリプトの書き方

    12月にTwitterに流れていたPOSIX何とかという話題を読んでいたらこの記事にたどり着いた。もう3年以上前の記事だけれど、内容がとても偏っていると思う。 シェルスクリプトの書き方について解説しているウェブ上の資料は少なく、当該記事も検索に引っかかりやすい。最近の初学者はまず検索して調べることが多いが、反論が検索に引っかからないとそれが正しいと受け入れてしまう可能性が高いように思う。きちんと反論している日語の記事が引っかからないので、あえて問題と思う点をまとめてみた。 そんなこと書いているあなたは誰? わたしはシェルスクリプトの専門家でも職業プログラマでもないけれど、シェルスクリプトを書いた量はそれなりにあると思う。環境はSunOS4, Solaris, HP-UX, IBM AIX, FreeBSD, OpenBSD, Linuxを経験していて、移植性や性能の問題がどこで発生しやす

    akanehara
    akanehara 2017/01/13
    知らなかった "setで出力される変数の一覧は、そのままevalして変数代入できることがPOSIXで保証されている。"
  • どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita

    シェルスクリプトは環境依存が激しいから…… などとよく言われ、敬遠される。それなら共通しているものだけ使えばいいのだが、それについてまとめているところがなかなかないので作ってみることにした。 「どの環境でも使える=POSIXで定義されている」と定義 「どの環境でも使える」とは、なかなか定義が難しい。あまりこだわりすぎると「古いものも含め、既存のUNIX全てで使えるものでなければダメ」ということになってしまう。しかし、私個人としては 今も現役(=メンテナンスされている)のUNIX系OSで使いまわせること にこだわりたい。 とはいっても全てのOSやディストリビューションについて調べられるわけではないので、この記事では基的に最新のPOSIXで定義されていることをもって、どの環境でも使えると判断するようにした。(飽くまで「基的に」ということで) 従って、互換性確保のため、シェルの中で使ってよい

    どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita
  • 1