- ベストアンサー
cshのechoに関して
- cシェルでのechoコマンドに関する質問です。クラスパスの設定時に発生しているエラーについて解決策を教えてください。
- 現在、cシェルでJavaを実行するプログラムを組んでいます。クラスパスの設定時にエラーが発生しており、うまくパスがセットされていないようです。
- 具体的には、クラスパスを設定した際に、期待しているパスとは異なる結果が出てしまいます。この問題の解決策を教えていただけませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
よく見たら、「/libe/user/test」と出力されるんですね 「/home/user/test」じゃなくて。 それで、わかりました。 改行コードがDOS(CR+LF)のスクリプトを、 cshがunix系の改行コード(LF)として実行としています。 set class_home=/home/user/test が set class_home=/home/user/test[CR] ([CR]はCRのコード)と解釈されて set lib_home=${class_home}/lib が set lib_home=/home/user/test[CR]/lib になって echo ${lib_home} で /home/user/test まで表示したところでCRで行頭に移動、その続きの /lib を表示するので、 画面上には後からの出力された文字だけが残るので /libe/user/test と表示される、ということです。 スクリプトの改行コードをLFにしてください。 エディタで設定を変えるとか、ツールを使うとかやりかたがありますが、これ以上詳しくは、あなたがどんな環境やOSを使用しているか、わからないので、説明できません。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
こちらでは再現しませんでした(手元にtcshしかないので、その差かもしれませんが) やってみるべきことしては ・-xや -v オプションで実行の様子を確認する ・set lib_home="${class_home}/lib" 等とダブルクォートで括る ・B-sh系にする くらいでしょうか
お礼
ご回答ありがとうございました。 改行コードが原因でした。 まだまだシェルは使いこなせていないので 色々と勉強してみます。 本当にありがとうございました。
お礼
ご回答ありがとうございました。 改行コードが原因でした。 ご指摘頂いてとても助かりました。 本当にありがとうございました。