質問: ### 前提・実現したいこと Tera Termのマクロを使用して、サーバー上のディレクトリの存在チェックを行い、ディレクトリが存在しない場合はディレクトリを作成するような処理を実現したいと考えています。 ### 発生している問題・エラーメッセージ 以下のサイトを参考にマクロを実装してみましたが、Teratermのコンソール上は「==OK==」と表示されているにもかかわらず、resultには"2"が格納されてしまいます。 http://www.illinternet.com/2017/11/05/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%AD%98%E5%9C%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8Bteraterm%E3%83%9E%E3%82%AF%E3%83%AD/ ### 該当のソースコード ``` connect [サーバーのIP] wait 'login:' sendln [ユーザー名] wait 'Password:' sendln [パスワード] wait '#' sendln 'file="/tmp/example"; [ -d "$file" ] && echo "==OK==" || echo "==NG=="' wait '==' waitln '==OK==' '==NG==' messagebox result 'result' ``` ### 試したこと setsync を1(同期モード)に設定 ⇒ 結果は変わりませんでした。 waitlnではなく、waitを使用 ⇒ 結果は変わりませんでした。 ### 補足情報(FW/ツールのバージョンなど) サーバー:AIX 7.1 クライアント:Windows 10 64bit Teraterm:ver.4.99(32bit) 以上、よろしくお願い致します。
回答: 上記の件について、自己解決いたしました。 対応としては、setsync 1 で同期モードをONにし、waitlnをwaitに変更しました。 また、「wait '=='」 と「wait '==OK==' '==NG=='」の間にrecvlnコマンドを追加しました。 従って、最終的には以下のようになりました。 ``` ...ログイン処理... setsync 1 wait '#' sendln 'file="/tmp/example"; [ -d "$file" ] && echo "==OK==" || echo "==NG=="' wait '==' recvln wait '==OK==' '==NG==' if result = 2 then ;; NGの場合の処理 elseif result = 1 then ;; OKの場合の処理 endif setsync 0 ``` 参考:https://qa.itmedia.co.jp/qa8275608.html