Tcl 文法-使い方をサンプルコードで解説

はじめに

tcl言語をサンプルコードを基に解説していきます

各サンプルコードは「sample.tcl」という名前で保存して

tclsh sample.tcl

で実行しています

標準出力

動作を簡単に確認できないので、まずはこれから

puts hoge
# 出力
# hoge

変数の定義

set <変数名> 値

で定義します

$<変数名>

で呼び出せます

set val hoge
puts $val
# 出力
# hoge

if文

if { <条件式> }{
}

で作成します

elseif, elseは「} elseif {」のように、「}」と「elseif」が同じ行にある必要があります

set val 1
if { $val == 3 } {
    puts "if"
} elseif { $val == 2 } {
    puts "elseif"
} else {
    puts "else"
}

# 出力
# else

for文

for { 変数の初期化 } { 条件式 } { incr 変数 }{
}

で作成します

for { set val 0 } { $val < 3 } { incr val } {
    puts $val
}

# 出力
# 0
# 1
# 2

while文

while { 条件式 } {
}

で作成します

「while { 条件式}」と「{」の間に空白がないとエラーになります

set val 0
while { $val < 3 } {
    puts $val
    incr val
}

# 出力
# 0
# 1
# 2

foreach

foreach <index> <リスト> {
}

で作成します

set a [list a b c d]
foreach i $a {
    puts $i
}

# 出力
# a
# b
# c
# d

リストを複数持つこともできます。

set a [list a b c d]
set b [list a b c d]
foreach i $a j $b {
    puts $i
    puts $j
}

# 出力
# a
# a
# b
# b
# c
# c
# d
# d

計算

expr 数字 (+, -, *, /, )数字

で計算します

exprがないと、文字列として読み込んでしまいます

set val 3*3
puts $val
set val [expr 3*3]
puts $val

# 出力
# 3*3
# 9

set 変数のあとに「[]」で囲むとコマンドの実行結果を変数に入れることができます

tclの実行結果を変数に格納する

set 変数のあとに「[]」で囲むとコマンドの実行結果を変数に入れることができます

set val1 3
set val2 [expr $val1*3]
puts $val2

# 出力
# 9

シェルのコマンドを実行

[exec <シェルコマンド>]でシェルのコマンドを実行できます

set val [exec ls]
puts $val

# 出力
# sample.tcl

ファイル or ディレクトリの存在を確認する

file isfile <ファイル or ディレクトリ>

で<ファイル or ディレクトリ>が存在すると1、存在しないと0が返ります。

if { [file isfile work.tcl] } {
    puts OK
}
# 出力
# OK

ディレクトリの存在を確認する

file exists <ディレクトリ>

で<ディレクトリ>が存在すると1、存在しないと0が返ります。

if { [file exists work_dir] } {
    puts OK
}
# 出力
# OK

正規表現を使用する

regexp {<正規表現>} <文字列>

でマッチすると1、マッチしないと0が返ります。

if { [regexp {.*hoge} fugahoge] } {
    puts OK
}
# 出力
# OK

他のtclファイルを読み込む

source <tclファイル>

でほかのtclファイルを呼び出せます

「puts test.tcl」と書き込んだtest.tclファイルを作成します

test.tcl
puts test.tcl

sample.tclには以下を書き込みます

sample.tcl
source test.tcl

# 出力
# test.tcl

関数(プロシージャ)

proc <関数名> { 引数1 引数2 … } {
<関数の中身>
}

で作成します

proc func { in1 in2 } {
    expr $in1 + $in2
}
puts [func 3 4]

# 出力
# 7

リストの要素数を取得する

llength <リスト>

でリストの要素数を取得できます。

set a [list a b c d]
puts [llength $a]

# 出力
# 4

リストに要素を追加する

lappend <変数1> <変数2>

で<変数1>に<変数2>を足したリストを作成できます。

set a [list a b c d]
lappend a e
puts $a

# 出力
# a b c d e

カレントディレクトリを返す

pwdでカレントディレクトリを返します

puts [pwd]

# 出力
# /home/vagrant

リストを作成する

list <変数1> <変数2> …

でリストを作成します

set val [list a b c d]
puts $val

# 出力
# a b c d

まとめ

tcl言語の基本的な使い方について、サンプルコードを基に説明しました

コメント

タイトルとURLをコピーしました