; (セミコロンを使うと 1 行に複数のコマンドが書ける。
#!/bin/csh # 4.1 算術計算 keisan # @ i = 12 @ j = 14 @ k = $i + $j ; echo "和 =" $k @ k = $j % $i ; echo "余り =" $k @ k += 3 ; echo "k に 3 を足すと" $k
% keisan 和 = 26 余り = 2 k に 3 を足すと 5うまくいっていますね。この他の演算として、
+, - , * , / , % : 和, 差, 積, 商, 余 +=, -=, *=, /=, %= : 左側の変数に 右側の変数を操作して左に代入 ++, -- : 1 足す、1 引く <<, >> : 左シフト, 右シフト | , & : bit or, bit andこの演算は c 言語と同じです。c 言語に近い shell なので、 csh というわけです。
注意: csh script は整数しか扱えません。不動点小数を使いたい場合には perl scriptを使うと出来ます。
#!/bin/csh # 4.2 予約変数 yoyaku echo "こんにちは $USER さん。いま $PWD にいますね。" echo "引数全体は $argv です。$* も同じで alias で良く使われます。" echo "引数の数は $#argv です。" echo "2 番目の引数は $argv[2] です。$2 でもあります。" echo "コマンドの file 名は、$0 です。" echo "1 番目 から 3 番目までの 引数は、$argv[1-3] と書かれます。" # file の一部を取り出し使います。 set file = "/home/rsaito/tex/anzu.tex" echo $file, $file:r, $file:h, $file:t, $file:e
% yoyaku a b c d e こんにちは rsaito さん。いま /home/rsaito/csh-nyuumon にいますね。 引数全体は a b c d e です。a b c d e も同じで alias で良く使われます。 引数の数は 5 です。 2 番目の引数は b です。b でもあります。 コマンドの file 名は、yoyaku です。 1 番目 から 3 番目までの 引数は、a b c と書かれます。 /home/rsaito/tex/anzu.tex, /home/rsaito/tex/anzu, /home/rsaito/tex, anzu.tex, tex特殊な変数として、現在の process ID として $$ があります。こ れは、重なってはいけない file 名を作りたい場合に良く、 file.$$ として使います。こうすれば、file が重複してできる場 合は極めて少なくなります。
#!/bin/csh # 4.3 引用記号 inyou echo 'シングルコーテーションではさむと $USER のままです。' echo "ダブルコーテーションではさむと $USER が代入されます。" echo `who` "とすると who の結果がでます。" echo "`who`" "と比べてみてください。" echo " echo で シングルコーテーションやダブルコーテーション" echo " を表示させるのは、結構難問です。試してみてください。"実行結果を示します。
% inyou シングルコーテーションではさむと $USER のままです。 ダブルコーテーションではさむと rsaito が代入されます。 rsaito tty1 Jul 6 21:01 rsaito ttyp0 Jul 6 21:01 (:0.0) とすると who の結果がでます。 rsaito tty1 Jul 6 21:01 rsaito ttyp0 Jul 6 21:01 (:0.0) と比べてみてください。 echo で シングルコーテーションやダブルコーテーション を表示させるのは、結構難問です。試してみてください。