• ベストアンサー

アップルスクリプトで複数行のDoShellScript

アップルスクリプトでsendmailのようなコマンドラインをDo Shell Script するときに複数行を送るとエラーになりますが、何か特別な書き方があるのでしょうか? Do Shell Script "sendmail ***@efg.com From: *****@stu.com To: ***@efg.com Subject: たいとる 本文 . "

  • Mac
  • 回答数4
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • capy2009
  • ベストアンサー率72% (337/465)
回答No.4

もう一つちなみに、シェルスクリプトとして実行したい場合には echo (タイトルと本文) | sendmail -r (送信先アドレス) (送信元アドレス) などとします。

apple2plus
質問者

お礼

ありがとうございます 勉強になります

その他の回答 (3)

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.3

ちなみに、 > sendmail ***@efg.com > From: *****@stu.com > To: ***@efg.com > Subject: たいとる > 本文 > . これはシェルスクリプトじゃないですよ。その証拠に、この内容を test.sh などのファイル名でセーブして sh test.sh を実行しても動かないはずです。ですから do shell script では使えません。 そうではなくて、ターミナルの CUI を利用してインタラクティブに実行する単なるコマンドなので、tell application "Terminal" to do script を使えば実行できます。

apple2plus
質問者

お礼

ありがとうございます おっしゃる通りにしたらちゃんとできました

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.2

ああ、複数のコマンドを実行しようというわけではないんですね。 ならセミコロンでなく & return で繋いでください。

apple2plus
質問者

お礼

ありがとうございます エラーは出なくなったんですが 思ってるような動作してくれません do shell script "sendmail ***@***.com" & return & "From: ***@***.com" & return & "To: ***@***.com" & return & "Subject: myTitle" & return & "myContents" & return & "." & return もうちょっとがんばってみます

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.1

改行でなくセミコロンで区切ってください。

関連するQ&A

  • ファイルから1行または複数行を標準出力する方法

    ものすごく簡単な問題のような気がしますが,わかりません. コマンドで,テキストファイルから1行または複数行を標準出力する方法はありませんでしょうか? 例えば,foo.txt の10行目を出力 > line 10 foo.txt あるいは,複数のコマンドをパイプをかませて実現する方法でもかまいません. スクリプト言語すら使わないで実現できるような気がするのですが思いつきませんでした. よろしくお願いします.

  • shellスクリプトに複数の引数を渡したい

    shellスクリプトに複数の引数を渡したいと考えています。 下記のようなperlスクリプトを兼ねる事でやりたいことは達成できました。 これをシェルスクリプトだけでやろうとしていて、ハマってしまい、やり方がわからなかったので、質問しています。 ・echo.shの中身 $ cat echo.sh echo $1 $2 ・imglist.plの中身 $ cat imglist.pl my@imglist= `ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} 2>1&`; foreach(@imglist){ my@name=split /\./,$_; system("bash ./echo.sh $name[0] $name[1]"); } ・実行すると、無事echo.shに引数が2つ渡る。 $ perl imglist.pl abc1 jpg abc10 png abc11 png abc2 jpg abc3 jpg これをシェルのみでやろうとして、はまってしまいました。 以下は、パイプ処理等を使ったりしてやってみたのですが出来ませんでした。 ・awkでファイル名と拡張子に分解し、パイプで渡そうとしても何故か渡らない・・ $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}'| bash ./echo.sh ・ファイルに一旦保存し、catコマンドでパイプで渡しても駄目 $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}' > imglist.txt $ cat imglist.txt | bash ./echo.sh ・echoコマンドを使ってパイプで渡しても駄目 $ echo `cat imglist.txt` |bash ./echo.sh ・for.shというファイルを作成し、for構文でimglist.txtの中身を渡すと引数が一つずつしか渡らない $ cat for.sh for id in $(cat imglist.txt); do echo $id done $ bash for.sh tile1 jpg tile10 jpg どうやれば、コマンドライン上やシェルスクリプトだけで、今回はファイル名と拡張子という形で複数行からなる2つの引数を渡すことができますでしょうか

    • ベストアンサー
    • Perl
  • sendmailで複数アドレスに送信するも2件までしか送信出来ない

    会員向けメール通信システムを作成しています。(けしてSPAMではありません。) PerlCGIによりSendMail送信させますが、次のようなコードで(一部省略しています。) # =================================================== $MAILTO="xxx\@xxxx.com;ooo\@oooo.com"; $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($from); $mail_subject = mimeencode($subject); $m_header = <<END; Bcc: $mail_to From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # sendmailで送信 open(MAIL, "| $SENDMAIL -t -f $mail"); print MAIL $m_header, $m_body; close MAIL; # =================================================== で表記のように $MAILTOが2件までなら送信が出来ますが "xxx\@xxxx.com;ooo\@oooo.com"; ではなく "xxx\@xxxx.com;ooo\@oooo.com;aaa@aaa.jp"; の様に3件以上になると送信されません。 なにが原因であるかと、対応策を教えて下さい。

    • ベストアンサー
    • Perl
  • 行頭が数字の行を表示するシェルスクリプト

    最近シェルスクリプトの勉強をはじめまして、一度自分で作ってみようと思い 行頭が数字の行を表示するシェルスクリプトを書いてみました。 が、うまく出来ません。 表示させたいファイルは字幕ファイルの始めの10行程度で内容は以下の様になってます 1 00:00:03,600 --> 00:00:07,195 xxxxxxxxxxxxxx xxxxxxxxxxxxxx 2 00:00:07,360 --> 00:00:09,635 xxxxxxxxxxxxxx xxxxxxxxxxxxxx     ・       ・     ・ xxxxxxxxxxxxxの部分には英語の台詞が入ります。 以下が自分で作ってみたスクリプトです。 #!/bin/bash while read Line do if [ "$Line" eq [0-9][0-9] ] then echo $Line else : fi done < $1 表示させたいのは行頭が数字の行なので自分の望む結果は 1 2 3 ・ ・ ・ です。 初歩的な間違いかもしれませんが、自分にはどこが間違っているのか分かりません。 酷いスクリプトかもしれませんが、一応完成させてみたいのでご指導お願いしますm(_ _)m

  • 起動させたメールに本文を複数項目入れたい

    起動させたメールに件名や本文を入れる時 mailto:info@example.com?subject=件名&amp;body=本文 ここまでは調べて実際起動もOKでした。 自分の希望は本文に複数項目入れたい場合 ・・・・・・・件名&amp;body=本文 の、本文の後ろにどのようなhtml言語入れればよろしいのでしょうか? 素人は素人的に<br>いれて挑戦してみましたがそのまま<br>が表示されてしまいます。 希望表示は 1行目・・・ID 2行目・・・希望PW 3行目・・・本名 です。 ご教授お願いします。 作成ソフトは「HPビルダー10」です。

  • sendmailの-fオプション記述

    sendmailコマンドでは、-f オプションでfromアドレスを指定しない場合、お客様のBIGLOBEメールアドレスがfromアドレスに設定されてメール送信がされます。 ↑と記載されているので-fオプションを設定したいのですが、↓に書き足すにはどの様に記載したら良いでしょうか? if ($sendmail) {send_mail($sendmail,'',$subject,$masteremail,'','','',$msg)} if ($sendmail) {send_mail($sendmail -f ***@***.ne.jp,'',$subject,$masteremail,'','','',$msg)} ↑だとBIGLOBEメールアドレスのまま届いてしまいます。

    • ベストアンサー
    • CGI
  • 複数ファイルを1つにするシェルスクリプト

    file.1 file.2 ..... file.xx とxxが連番になっている複数のテキストファイルがあります。 これを1つのファイル"file.all"にするために以下のシェルスクリプトを作ってみました。 (公開するのも恥ずかしいのですが...^ ^;) #!/bin/sh i=1 while [ $i -le 99 ]; do  cat file.$i >> file.all  let i=i+1 done これだと99までのファイルしか指定できません。 99999...とループ回数を増やせばいいのですが、 それよりももっとスマートにやる方法があるのではと思い質問を投稿いたしました。 シェルスクリプトではなくコマンドによる方法でも結構です。 (RH7.3を使っています) よろしくお願いします。

  • Sendmailで送信すると本文にメールヘッダーが出る

    いつもお世話になります。 PerlでSendmail送信プログラムは何回か作ったことが有るのですが、いつもと同じように作っているつもりにも関わらず、送信されたメール本文の1~2行目に Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP が表示されます。 コードは$mailtoや$mail_from、$mail_subjectなどをMIMEエンコードしてから下記の様なコードでメールヘッダーを作成し $header = <<END; To: $mailto Bcc:$mail From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END #メールの本文を下記のように作成 $body = <<END; メール本文 END $mbody=jcode::jis($body); #Sendmailで送信する。 open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail."); print MAIL $header, $mbody; close MAIL; というコード-です。 なにが原因かおわかりの方宜しくお願いします。

    • ベストアンサー
    • Perl
  • Mail::Sendmailの使い方

    お世話になっております。 先日よりsendmailの調子がおかしくていろいろ調べているのですが煮詰まってしまったので詳しい方々にご教授頂きたいと思います。 先日よりMovable Type(CMS)でのメール送信のシステムが機能しなくなり、いろいろ調べているとサーバーのsendmailはきちんと機能しているのですが、perlのモジュールMail::Sendmailがうまく作動していないようなのです。 perlでは、 open (SENDMAIL, "/usr/lib/sendmail -t -i"); (中省略) close(SENDMAIL); という原始的な方法ではメールが送信されるのですが、 use Mail::Sendmail;という使い方では、エラーにはなりませんがずっと読み込み中…状態が続いてメールが送信されませんでした。 Movable TypeでもMail::Sendmailが利用されていますのでここが原因かと思いますが、Mail::Sendmailを使用するにあたって注意すべきこと、または設定すべきことはどのようなことがあるでしょうか?さしあたりどこをチェックしてよいのかわからなくて困っています。 よろしくお願いします。 Mail::Sendmailを利用して作成したスクリプトは以下のようなものです。 #!/usr/bin/perl use strict; use warnings; use Mail::Sendmail; use Encode; use utf8; my $subject = "テスト"; my $message = "テストです。ほげほげ。"; $subject = encode("MIME-Header-ISO_2022_JP", $subject); $message = encode("iso-2022-jp", $message); my %mail = ( "Content-Type" => 'text/plain; charset="iso-2022-jp"', To => 'to@example.com', From => 'from@example.com', Subject => $subject, Message => $message, ); sendmail(%mail); exit;

    • ベストアンサー
    • Perl
  • sendmailで使える記号

    こんにちは。 sendmailでメールの送信を行っています。 RFCの規定上は ! # $ % & ' * + - / = ? ^ _ ` { | } ~ などの記号が使用可能だと分かりました。 しかし上記の一部の記号が入っていると、メールの送信が出来ません。 コマンドラインより、 ------------------------------------ sendmail !#$%&'*+-/=?^_`.{|}~@ example.com From :test@ example.com To :!#$%&'*+-/=?^_`.{|}~@ example.com     ・     ・     ・ ------------------------------------ という形で試しましたが、実行されませんでした。 (表示上、@の後ろにスペースを入れています) sendmailで上記記号を使用可能にするには、何か設定が必要なのでしょうか? よろしくお願いいたします。