タグ

ブックマーク / hasepy.cocolog-nifty.com (2)

  • シェルスクリプト:ビルトインの test を活用する - Fly high.のブログ

    「カレントディレクトリの中のファイルに使われている『拡張子』の種類と数を調べたい」といった用途には、以下のようなワンライナーが使えます。 for i in *; do echo .${i#*.}; done | sort | uniq -c さきに紹介した変数展開 ${…#…} を使ってカレントディレクトリの各ファイル( * )の『拡張子』部分を取り出し、パイプを使って外部コマンドの「 sort | uniq -c」にわたしています。 これでも動きますが、このままではディレクトリや拡張子のないファイルもソートされ(さらに、よけいな「.」が付けられたうえで)、表示されてしまいます。そこで、これらのファイルを処理対象に含めないようにするならば、たとえば以下のような表現が使えます。 for i in *; do if [ ! -d $i ] && [ -z "${i%%*.*}" ]; then

    シェルスクリプト:ビルトインの test を活用する - Fly high.のブログ
  • シェルスクリプト:ワンライナーで変数を活用 - Fly high.のブログ

    UNIX系のシェルが単純な「コマンドインタープリタ」にはとどまらず便利に使える点のひとつとして、「変数(parameter)を活用できる」ことがあると言えるでしょう。簡単に試すなら以下のような方法が使えます。 $ i=1 $ echo $i 1 $ echo ${i} 1 シェルスクリプトで変数を扱う場合、たとえば変数名が「 i 」であるなら、変数名そのものは「 i 」と書くのに対し、その値を参照するときは「 $i 」としなければなりません。 注:なお、値の参照については「 ${i} 」とするのがより汎用的で正式な書き方で、以下の例のいずれにおいても「 $i 」の代わりに「 ${i} 」を用いることができます。 私見ですが、ワンライナーで書けるような単純な処理で、変数を使ってその値を活用したいと思うかどうかの心理的な閾値は、その値が処理の中で3箇所以上にわたって登場するかどうか、というあた

    シェルスクリプト:ワンライナーで変数を活用 - Fly high.のブログ
  • 1