ここから本文です

お礼500枚:テラタームマクロの sendln でダブルクオート、シングルクオートを...

r_t********さん

2009/10/513:44:15

お礼500枚:テラタームマクロの sendln でダブルクオート、シングルクオートを同時に使いたい

テラタームマクロの sendln で以下のようにダブルクオート(")とシングルクオート(')を混ぜたコマンドを入力したいのですが、どのようにすれば可能でしょうか。

ps -ef | awk '{printf("%s %s %s\n", $1, $2, $NF)}'

よくあるエスケープシーケンス(直前に¥を付加など)を試してみましたが、エラーとなってうまく認識できません。


実際には、コマンドを記述したテキストをバッチで読み込み、自動的にテラタームマクロを生成するということをやろうと思っています。
なので、コマンドを分解して strconcat などで強制的にくっつけるのはNGです。
ただし、文字列置換はできますので、シングルクオートの前に ¥ を付ける、などの整形は可能です。

【コマンドテキスト(例)】
cd bin
sample.sh
ps -ef | awk '{printf("%s %s %s\n", $1, $2, $NF)}'

↓テキストを元にマクロ自動生成

【テラタームマクロ】

(前処理省略)

sendln 'cd bin'
sendln 'sample.sh'
sendln 'ps -ef | awk '{printf("%s %s %s\n", $1, $2, $NF)}'' ←これだとNG

(後処理省略)


以上、よろしくお願いします。

閲覧数:
26,984
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2009/10/611:17:34

tera termヘルプより
--ここから--
文字列型定数を表現する方法は2つ。

a) 値となる文字列の両端を ' か " で囲む(両端とも同じ文字で)。文字列値を構成する文字は表示可能で囲み文字と異なる文字ならば何でもよい。

例:
'Hello, world'
"I can't do that"
"漢字も可能"
b) 1文字を ASCII (または JIS ローマ字、Shift-JIS) コード(10進数または$で始まる16進数)で表現し、先頭に "#" をつける。 ASCII コード 0 の文字 (NUL) は文字列定数に含めることができない。

例:
#65 文字 "A"
#$41 文字 "A"
#13 CR 文字

a) と b) は組み合わせることが可能。

例:
'cat readme.txt'#13#10
abc'#$0d#$0a'def'#$0d#$0a'ghi'

--ここまで--
とありますので、文字列中の'や"をb)の形式で
' #$27
" #$22
と表記してやったらどうでしょう?

sendln 'ps -ef | awk '#$27'{printf("%s %s %s\n", $1, $2, $NF)}'#$27
とすれば(' 'で囲まれるので"は書き換え不要) 送信文字列は
ps -ef | awk '{printf("%s %s %s\n", $1, $2, $NF)}'
となるようです。

質問した人からのコメント

2009/10/6 14:06:10

無事できました、ありがとうございます!!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる