質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

3254閲覧

TeraTermマクロ:ファイルの存在確認によるif文

tatan

総合スコア2

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2023/10/11 05:44

実現したいこと

・指定したファイルの存在有無の確認により分岐するif文を作成したい
・リモートから受信したテキストによってif分岐を行いたい

前提

sendln "test -f /home/test/test.lock ; echo CC=$?"
上記のコマンドラインにより指定したファイルの存在有無を確認し、存在が確認できればCC=0、確認できなければCC=1とする。
その値によってif分岐を行いたいです。
・test -fコマンドによる値は正しく取れていることがプロンプトから確認できています。

発生している問題・エラーメッセージ

・if文の条件式にリモートから受信した「CC=0, CC=1」の値を埋め込むことができない。
・下記のソースコードを実行すると必ずCC=0の処理に入る

該当のソースコード

ttl

1;ファイルが存在する場合はCC=0, 存在しない場合はCC=1を返却 2sendln "test -f /home/test/test.lock ; echo CC=$?" 3wait "CC=0" "CC=1" 4recvln 5recvln 6recvline=inputstr 7 8;test.lockファイルを確認した場合、シェルを実行せずにマクロを終了 9if $recvline == "CC=0" then 10 endMsg = "test.lockファイルが存在しています。マクロを終了します。" 11 messagebox endMsg "Status" 12 end 13 14elseif $recvline == "CC=1" then 15;yesnoboxは「はい」でresult=1, 「いいえ」でresult=0が返却 16MSG = "「はい」→test.sh実行 「いいえ」→終了" 17yesnobox MSG "Status" 18if result = 0 then 19 end 20else 21 sendln "/home/test/test.sh" 22 end 23endif 24end

試したこと

・変数recvlineの前の「$」が必要ない?
結果:Type mismatchエラー

補足情報(FW/ツールのバージョンなど)

OS:Linux
TeraTermマクロのバージョン:4.97

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ttl

1;ファイルが存在する場合はCC=0, 存在しない場合はCC=1を返却 2sendln "test -f /home/test/test.lock ; echo CC=$?" 3waitln "CC=0" "CC=1"

waitlnでresultの値を取得してif分岐ができました

投稿2023/10/11 06:43

tatan

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問