はじめに
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言語の基本的な使い方について、サンプルコードを基に説明しました
コメント