問題はecho
コマンドではなく、cshがバッククックを処理していることが原因です。あなたはmyfile
から
set var = `cat myFile`
改行を実行すると$var
に格納されることはありません。彼らはスペースに変換されます。私はcsh変数にファイルから読み込んだ改行を含めるように強制する方法は考えられませんが、それを行う方法があるかもしれません。
shとその派生物は、あなたが望むように動作します。例:
$ x="`printf 'foo\nbar'`"
$ echo $x
foo bar
$ echo "$x"
foo
bar
$
割り当てに二重引用符を付けると、改行(最後のものを除く)が保持されます。 echo $x
は改行をスペースで置き換えますが、echo "$x"
はそれらを保存します。
あなたのベスト・ベットは、ファイルの内容を変数に格納しようとする以外のことです。あなたは、コメントで、ログファイルの内容を電子メールで送信しようとしていると言いました。そのため、使用しているメールコマンドに直接ファイルの内容を入力してください。私はすべての詳細を持っていないが、それは次のようになります。
(echo this ; echo that ; echo the-other ; cat myFile) | some-mail-command
必須参照:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/あなたはシェル文字列彼らの前には「\ n」を持つそれぞれの行を区切るためのAwkを使用することができます
varに値を取り込むときには、 'set var =" \ 'cat myFile \' "'を引用符で囲んでみてください。がんばろう。 – shellter
'/ bin/echo'にアクセスできますか? – cnicutar
@shelter - 以前もそれを試していたが、役に立たない。 – WhyGeeEx