2016-05-31 4 views
0

に私は一定時間後にメールが送信されます簡単なRubyスクリプトを持っています、これは私のコードです:は、コマンドでRubyスクリプト

#!/usr/bin/env ruby 
system("at now + 1 day <<END 
echo 'This is test message from xyz' | mail -s 'Test message' [email protected] 
END") 

私はこのスクリプトを実行するたびに、私は

SHを取得します: END:見つからない

編集1

構文エラー:私は

system("at now + 1 min echo 'This is test message from xyz' | mail -s 'Test message' [email protected]") 

のような単一の行に使用している場合は、それがエラーを与えます。見た最後のトークン:電子

文字化け時間

この中に間違ってやっているでしょうか?

+0

'END'コマンド/テンプレートは何をするのでしょうか? – emaillenin

+0

@emailenin私は 'system'のmultilineコマンドに使っています。メールを送信するための正しい構文よりも間違っているとします。 ? – Rahul

+0

同じ行を1行で実行すると機能しますか? – emaillenin

答えて

3

atワンライナー形式は、echo 'COMMAND' | at WHENのようになります。

あなたはこれを試すことができます。

system("echo \"echo 'This is test message from xyz' | mail -s 'Test message' [email protected]\" | at now + 1 day") 
+0

あなたの提案は私が欲しくない 'at>'コマンドラインに連れて行きます。私はこのスクリプトがメールを送信する必要があります – Rahul

+0

ありがとう、それは私が望んだものです。しかし、あなたは私に少し説明してもらえますか?なぜ二重の「エコー」を使ったのですか? – Rahul

+1

@arzyfex最初の 'echo'のみが重要で、2番目の 'echo'は' COMMAND'の一部です。 – delta

関連する問題