Csh スクリプト [unix 基礎]

変数

  • 変数名は英数字とアンダースコア(_)から成る。ただし1文字目が数字ではいけない
new_file2
_local_
1of2      (エラー、数字で始まっている)
  • 変数を参照する時には、直前にドル記号($)を付ける。紛らわしい場合には変数名を波括弧({})で囲む
echo $HOME
cp this.file $HOME/
cp $file ${file}new
  • 変数に数値か文字列を代入するには、set コマンドを使う
set var1=456       (数値を代入)
set var2 = 456     (空白をいれても良い)
set var3='text $a' ($a はそのまま代入される)
set var4="text $a" ($a を変数として、展開してから代入)
  • 特別な変数
$0           (シェルの名前またはシェルスクリプト名)
$1, $2, ...  (スクリプトの1つ目の引数、2つ目の引数、...)
$*           (引数全部)
$#argv       (引数の数)

制御文

  • IF-THEN-ELSE
if ( 条件文1 ) then     # ( と ) の前後の空白は無くても良い
  処理1
else if ( 条件文2 )
  処理2
else
  処理3
endif
  • 条件文については、この下の「式」を参照
  • ifthen は1行に書く
例)
  if ( -f test.dat ) then
    ./myprogram test.dat
  endif
  • SWITCH-CASE
switch ( $変数 )      # 変数を参照するので $ を付ける
case 値1:
  処理1
  breaksw
case 値2:
  処理2
  breaksw
case 値3:
case 値4:
  処理3
  breaksw
default:
  デフォルト処理
  breaksw
endsw
  • FOR
foreach 変数 ( 値1 値2... )   # 変数に代入するので $ を付けない
  処理
end
例)
  foreach file ( *.dat ) # 全てのデータファイル(*.dat)について
    ./myprogram $file    # 1つづつ、プログラムで処理する
  end
  • WHILE
while ( 条件文 )
  処理
end

  • @, exit, if, while の中では式を書ける
  • 演算子は C 言語と同じ(優先順位も同じ)
  • 単独の式には @ コマンドを使用
@ name=expr
例)
  set n=0         # 初期値を設定
  while ($n < 10)
     ...
     @ n++          # +1 する
  end
  • テストオペレータ
-r file        ファイルが存在し、読み込み可
-w file        ファイルが存在し、書き込み可
-x file        ファイルが存在し、実行可
-f file        普通のファイルが存在する
-d dir         ディレクトリが存在する
-z file        ファイルが存在し、サイズがゼロ
str1 == str2   同じ文字列である
str1 != str2   同じでない文字列
n1 == n2       2つの数値が等しい
n1 != n2       2つの数値が等しくない
n1 > n2        n1 は n2 より大きい
n1 >= n2       n1 は n2 より大きいか等しい
n1 < n2        n1 は n2 より小さい
n1 <= n2       n1 は n2 より小さいか等しい
exp1 && exp2   論理積
exp1 || exp2   論理和

入出力リダイレクション

<file    file を標準入力にする
>file    標準出力を新しいファイルに書く
>>file   ファイルが存在するなら、標準出力をそこに追加する
<<delim  delim で始まる行までを標準入力にする
>&       標準エラー出力と標準出力を結合する
>>&      標準エラー出力を標準出力に追加する
|&       標準エラー出力と標準出力を結合し、パイプする

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-10-29 (金) 14:31:12 (5494d)