Midnightjapan

Tag: ファイル転送

シェルスクリプトファイルの転送について

by jun on 2月.08, 2013, under Linux, Windows

SIerとなり、なんとか3ヶ月でリリース担当にまでなりました。

PHPの軽微な改修なんかもやってますが。Javaの勉強は進まず年齢的にPMやらPL扱いの仕事が増えてきています。

さて、表題のシェルスクリプトについて。

Windowsなんかでシェルスクリプトを作成します。

FFFTPやWinSCPなどでファイルをサーバーに送信します。

その時、シェルスクリプトは正常に動作しますか?

いいえ、動作しない場合があります。

ファイルの転送モードや改行コードによってはエラーが起きるからです。

特にこんな場合です。

Linuxサーバー => シェルスクリプトダウンロード
Windowsで編集
Windows => Linux サーバーへアップロード

この時にシェルスクリプトはエラーで動かないことがあります。

転送モードがどうなっていたか見てみましょう。

Linuxサーバー => シェルスクリプトダウンロード (テキストモード)
Windowsで編集
Windows => Linux サーバーへアップロード(バイナリーモード)

これでエラーが起きます。

さて、なにがいけないのでしょうか?

まずは最初に転送モード自動でダウンロードして、なぜテキストモードなんでしょうか?

答えはテキストだからです。

この時にテキストファイルは改行コードをWindowsに合わせてに置き換えられるんです。

Windowsではたしかにに置き換えられていますので、元からなのかと思ってしまいます。

しかしLinuxの標準改行コードはです。

これをサーバーにはバイナリーで送信してしまいますと・・・。

バイナリーモードでは、0/1信号で送るためファイル形式が変わらないんですね。

これをテキストモードで転送すると、逆置換が自動で行われるんです。

改行コードをWindowsに合わせてにしてくれます。

Linuxのシェルスクリプトを含むテキストファイルではしか存在しないためなんか知らないのでエラーが起こるというわけです。

というわけで、複雑そうですが簡単に言うと・・・・

シェルスクリプトは改行コードをにてバイナリーモードで遅ればいいってことですw

以上、備忘録として私と同じようなミスをしませんようにw


UNIX LF JIS, EUC, (ShiftJIS)
Windows CR+LF ShiftJIS
Macintosh CR ShiftJIS


テキストファイルを改行コードや文字コードを変換して送信します。
当然画像ファイルをこのモードで送ると、バイナリーコードを文字に変換してしまい異常な形式になります。
注意としてはSVNなどでは改行コードの置き換えで変更があったと思われるので注意。


テキストファイルでも画像ファイルでも0/1信号で送信します。
このためファイルに変化は発生しません。

コメントなし :, , , , , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!