Shellスクリプトでcase文の使い方メモ

bash(sh)でcase文を書くときの基本は次のような感じです。

case $変数 in
  パターン1)
    実行したい内容1
    ;;
  パターン2)
    実行したい内容2
    ;;
esac

ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。

曜日ごとに異なる内容を実行したい場合(cronで便利です)

case `date +%a` in
  'Sun')
    日曜日に実行したい内容
    ;;
  'Mon')
    月曜日に実行したい内容
    ;;
  'Tue')
    火曜日に実行したい内容
    ;;
  'Wed')
    水曜日に実行したい内容
    ;;
  'Thu')
    木曜日に実行したい内容
    ;;
  'Fri')
    金曜日に実行したい内容
    ;;
  'Sat')
    土曜日に実行したい内容
    ;;
esac

ランダムで何か実行したい場合

case `expr $RANDOM % 3` in
  0)
    3分の1の確率で実行したい内容
    ;;
  1)
    3分の1の確率で実行したい内容
    ;;
  2)
    3分の1の確率で実行したい内容
    ;;
esac

C#のcharを大文字・小文字に変換する方法

C#のstringを大文字・小文字に変換したい場合はToLower/ToUpperが使えます。

string s;

// 小文字に変換
s.ToLower();

// 大文字に変換
s.ToUpper();

そこで、charを大文字・小文字に変換したい場合に何か簡単な方法がないか調べてみたところChar.ToLower/Char.ToUpperというのが便利みたいです。

使い方

// 小文字に変換
Char.ToLower('A');

// 大文字に変換
Char.ToLower('a');

お手軽にcharの大文字↔小文字を変換したい人は試してみてください。

リンク

Char.ToLower Method (System) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.char.tolower?view=netframework-4.8

Emacsで編集中のファイルのパスが知りたい場合

Emacsで編集中のファイルのパスが知りたい場合はbuffer-file-nameを使うと表示できるみたいです。

具体的には、編集中のファイル中のどこかに

(buffer-file-name)

と入力して、)のとなりでC-x C-eと入力するとファイルパスが表示されます。

.emacs

毎回(buffer-file-name)と入力するのが面倒な場合は.emacs

(defun show-file-name ()
  (interactive)
  (message (buffer-file-name)))
(global-set-key "\C-cz" 'show-file-name)

を追加すれば、M-x show-file-nameもしくはC-c zの入力でファイルパスを表示できるようになります。

リンク

emacs – The function to show current file’s full path in mini buffer – Stack Overflow
https://stackoverflow.com/questions/3669511/the-function-to-show-current-files-full-path-in-mini-buffer