4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tcshメモ書き

Posted at

bashと微妙に違うtcshの文法について、メモ書きとして残しておきます。
(CシェルはC言語とよく似た文法ではあるが中途半端で分かりにくい...)

#シェバン行
文頭に記述する行であり、コメントではない。
#!の後ろに書かれたシェルを用いてシェルスクリプトは実行される。

test.sh
#! /bin/tcsh -f

#変数宣言いろいろ
cシェルではset,setenv,aliasで宣言方法に差異があるので要注意。
##setを使う

set var = a # OK bashと違ってスペースがないとエラーが出ます。
set var=a   # ダメ
set var =a  # ダメ
set var= a  # ダメ
#配列を宣言(配列番号は1origin)
set arr = ( 10 20 30 40 50 )  
#参照例
$ echo $arr[3] 
30     #output

##setenv を使う(環境変数)

setenv var a   #変数名と変数の間に'='は不要

##aliasを使う(コマンドに別名を与える)

#ここではエイリアス'ls'にコマンド'ls -l'が代入される
alias ls ls -l  #エイリアスとコマンドの間に'='は不要

#制御構文
ここでは繰り返し処理と条件分岐、またそのとき条件の指定に用いる演算子についてまとめる。
##条件式いろいろ
###整数に関する条件式

条件式 意味
int1 == int2 int1とint2が等しい
int1 != int2 int1とint2が等しくない
int1 < int2 int1はint2より小さい
int1 <= int2 int1はint2以下
int1 > int2 int1はint2より大きい
int1 >= int2 int1はint2以上

###ファイルに関する評価演算子

条件式 意味
-e file fileが存在する
! -e file fileが存在しない
-d file fileが存在しディレクトリ
-h file fileが存在しシンボリックリンク
-f file fileが存在し通常ファイル
##while ループ
'()'の両側にスペースがないとエラーが出ます
while ( 条件式 )
   <処理>
end

##if 条件分岐
これも'()'の両側にスペースがないとエラーが出ます

if ( 条件式 ) then
    <処理>
else if ( 条件式 ) then
    <処理>
else 
    <処理>
endif

##goto文
goto namename:が書かれた行以下の処理にジャンプする。
if文と併用。あんまり使わない方がよい。

name:
<処理>

goto name

#算術演算
算術演算には行頭に@をつける。

set var = 5
@ var = $var + 3   #ここでは5+3が実行され、変数varの値は8となっている。

その他Tips

コマンドの実行結果を変数に代入する

set var = `<コマンド>`
#使用例
set var = `pwd`  #変数varにカレントディレクトリのパスが代入される  

ファイルパスからファイル名だけを取り出す

filename <ファイルパス>

ファイルパスからディレクトリだけを取り出す

dirname <ファイルパス>

#例文
最後に適当に例文を載せておく

#!/bin/tcsh -f
set ystr = 2005
set iyy = $ystr
set yend = 2010
set INPUT = $HOME/data
set OUTDIR = $HOME/data2
while ( $iyy <= $yend )
  set OUTPUT = $OUTDIR/$iyy 
    if ( ! -e $OUTPUT ) then
       mkdir -p $OUTPUT         #$OUTPUTで指定されるディレクトリがなかったら作成する
    endif
    cp $INPUT/$iyy/data.csv $OUTPUT/newdata.csv
@  iyy = $iyy + 1
end
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?