【TeraTermマクロ】コマンドのリターンコードを取得する


この記事はプロモーションを含みます。

Linux

TeraTermでコマンドのリターンコードを取得するのは、結構手間が掛かるので、部品化してみました。

ソースコード

こちらがリターンコード取得部品のソースコードです。
引数で渡されたコマンドを実行し、echoで実行結果を表示して、recvlnで取得しています。

;リターンコード初期化
RC=0

flushrecv
sendln CMD
pause 1
wait '$'
sendln 'echo $?'
pause 1
wait '$'
sendln ''
recvln
recvln
str2int RC inputstr

使用方法

ここでは使用方法について説明します。
部品名は「exec_cmd.ttl」としています。

呼び出し方

まず、変数「CMD」に実行コマンドを定義します。
次に、「include ‘exec_cmd.ttl’」で部品を呼び出し、
そちらで定義したコマンドが実行され、実行結果は変数「RC」に格納されます。

include 'login.ttl'

; 存在するファイルへのls
CMD='ls -l /tmp/TestFile.txt'
include 'exec_cmd.ttl'
messagebox RC 'リターンコード'

; 存在しないファイルへのls
CMD='ls -l /tmp/NonFile.txt'
include 'exec_cmd.ttl'
messagebox RC 'リターンコード'

end

実行結果

テストでは、存在するファイルへのlsコマンドの実行「戻り値:0」、
存在しないファイルへのlsコマンドの実行「戻り値:2」が取得出来ています。

[alma@localhost ~]$ ls -l /tmp/TestFile.txt
-rw-rw-r--. 1 alma alma 0 10月 25 10:36 /tmp/TestFile.txt
[alma@localhost ~]$ echo $?
0
[alma@localhost ~]$
[alma@localhost ~]$ ls -l /tmp/NonFile.txt
ls: '/tmp/NonFile.txt' にアクセスできません: そのようなファイルやディレクトリは ありません
[alma@localhost ~]$ echo $?
2
[alma@localhost ~]$

記事は以上になります。戻り値が取得出来たことで、後続処理を分岐させたりすることが出来るようになりました。是非、ご利用頂ければと思います。

コメント

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