2008年5月17日土曜日

Cシェルの修飾子

この記述ってナンだろな?

仕事上のCシェルのソースで見たこともない記述を見つけた。
  set var = "hoge";
  $var:r  # ←こんなの
調べてみたら、
どうやらCシェルは変数に修飾子をつけることが出来るらしい。
調べたことを自分用にメモ。

修飾子一覧

 $string:h          パス名の最後の部分を除いたパス名 
 $string:t          パス名の最後の部分だけ 
 $string:r          拡張子を除いた部分 
 $string:e          拡張子だけ 
 $string:s/x/y/    x を y に置換する 
 $string:q          文字列をクォートする 
 $string:x          文字列を空白やタブで区切り、クォートする

テストスクリプト

#!/bin/csh
set path = "/usr/local/home/test.sh"
set word = "Hello World"

echo $word:h         # → /usr/local/home
echo $word:t         # → test.sh
echo $word:r         # → /usr/local/home/test
echo $word:e         # → sh

# これ以降の修飾子は
# Linuxだと動いたけどSolarisだと動かなかった
echo $word:s/m/g/    # → /usr/local/hoge/test.sh
echo $word:q         # → Hello World
echo $word:x         # → Hello World

0 件のコメント: