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 ~]$
記事は以上になります。戻り値が取得出来たことで、後続処理を分岐させたりすることが出来るようになりました。是非、ご利用頂ければと思います。
コメント